首页 > 解决方案 > 如何每 5 分钟刷新一次流式应用程序中的元数据数据帧?

问题描述

我正在使用 spark-sql 2.4.x 版本,datastax-spark-cassandra-connector 用于 Cassandra-3.x 版本。与卡夫卡一起。

我有一个来自 kafka 主题的财务数据的场景,比如 financeDf 我需要重新映射 metaDataDf = //从 cassandra 表加载的一些字段以进行查看。但是这个 cassandra 表 (metaDataDf) 可以每小时更新一次。

在 spark-sql 结构化流应用程序中,我应该如何每隔一小时从 cassandra 表中获取最新数据?

我不想为我从主题即金融Df 收到的每条记录加载此数据metaDataDf。

这应该如何完成/处理?任何帮助请..

标签: apache-sparkcassandraapache-spark-sqlspark-structured-streaming

解决方案


你有更多的选择来做这样的事情,基本上当你在谷歌上搜索时,试着关注静态数据的火花浓缩 。堆栈溢出已经有一些答案。

您的主要问题是数据刷新。这取决于您的需求以及是否可以牺牲一些精度,分别是否需要在更改 Cassandra 后直接重新映射。一些可能的解决方案:

  1. 在 Kafka 中引入一些特殊事件,该事件将由外部系统创建并通知您您的 Cassandra 已更改(这是完全准确的并立即更新)
  2. 引入常量输入 dstream 或者结构化流中可能有类似的机制。基本上,它将创建单独的输出操作,它将在每个流式传输间隔读取 Cassandra 并在缓存不同时更新缓存(当然它不会在更改后立即更新,而是在最近的流式传输间隔更新)。
  3. 我也看到了具有窗口功能的解决方案,但它只是在一段时间后才更新。

当然,还有其他可能性,一切都取决于您的喜好。


推荐阅读