首页 > 解决方案 > Spark Structured Streaming - 流数据与静态数据相结合,每 5 分钟刷新一次

问题描述

对于 spark 结构化流作业,一个输入来自 kafka 主题,而第二个输入是一个文件(将由 python API 每 5 分钟刷新一次)。我需要加入这两个输入并写入 kafka 主题。

我面临的问题是当第二个输入文件被刷新并且火花流作业正在读取文件的同时我得到以下错误:

文件文件:/home/hduser/code/new/collect_ip1/part-00163-55e17a3c-f524-4dac-89a4-b9e12f1a79df-c000.csv 不存在 可能基础文件已更新。您可以通过重新创建相关的 Dataset/DataFrame 来显式地使 Spark 中的缓存无效。

任何帮助将不胜感激。

标签: apache-sparkspark-structured-streamingspark-streaming-kafka

解决方案


使用 HBase 作为静态存储。这肯定是更多的工作,但允许并发更新。

在我工作的地方,所有 Spark Streaming 都使用 HBase 来查找数据。快得多。如果您有 100M 的客户来处理 10k 条记录的微批次怎么办?我知道最初的工作量很大。

https://medium.com/@anchitsharma1994/hbase-lookup-in-spark-streaming-acafe28cb0dc

如果你有一个小的静态引用表,那么静态连接很好,但你也有更新,导致问题。


推荐阅读