apache-spark - 如何每 5 分钟刷新一次流式应用程序中的元数据数据帧?
问题描述
我正在使用 spark-sql 2.4.x 版本,datastax-spark-cassandra-connector 用于 Cassandra-3.x 版本。与卡夫卡一起。
我有一个来自 kafka 主题的财务数据的场景,比如 financeDf 我需要重新映射 metaDataDf = //从 cassandra 表加载的一些字段以进行查看。但是这个 cassandra 表 (metaDataDf) 可以每小时更新一次。
在 spark-sql 结构化流应用程序中,我应该如何每隔一小时从 cassandra 表中获取最新数据?
我不想为我从主题即金融Df 收到的每条记录加载此数据metaDataDf。
这应该如何完成/处理?任何帮助请..
解决方案
你有更多的选择来做这样的事情,基本上当你在谷歌上搜索时,试着关注静态数据的火花浓缩 。堆栈溢出已经有一些答案。
您的主要问题是数据刷新。这取决于您的需求以及是否可以牺牲一些精度,分别是否需要在更改 Cassandra 后直接重新映射。一些可能的解决方案:
- 在 Kafka 中引入一些特殊事件,该事件将由外部系统创建并通知您您的 Cassandra 已更改(这是完全准确的并立即更新)
- 引入常量输入 dstream 或者结构化流中可能有类似的机制。基本上,它将创建单独的输出操作,它将在每个流式传输间隔读取 Cassandra 并在缓存不同时更新缓存(当然它不会在更改后立即更新,而是在最近的流式传输间隔更新)。
- 我也看到了具有窗口功能的解决方案,但它只是在一段时间后才更新。
当然,还有其他可能性,一切都取决于您的喜好。
推荐阅读
- docker - 构建 Docker 镜像时出现 asp.net core app 错误
- mysql - MySQL GROUP_CONCAT 返回 BLOB,结果为空错误
- gnu - How to compile spec _.ada and body .ada using gnatmake?
- triggers - AzureDevops - PR 触发器 - PR 状态保持在“进行中”状态
- terraform - 整合 Terraform 模块
- sql - SQL:A列的B列条目也在A列中->将A中A的B条目的C列属性与原始A匹配
- php - 关于模型函数的 PHP/Codeigniter Dry 原理
- python - Python:关于打包应用程序 docker vs pyinstaller 的问题
- emacs - 用于在 OSX 上 iTerm2 中的 emacs 中导航括号的 Cm-% 键绑定
- nginx - 在 nginx 中设置多个域时访问错误