Spark结构化流-将流数据与静态数据合并,每5分钟刷新一次

时间:2019-12-25 11:23:35

标签: apache-spark spark-structured-streaming spark-streaming-kafka

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

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

  

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

在我工作的地方,所有Spark Streaming都使用HBase进行数据查找。快得多。如果您有一个拥有1亿个客户的微型批次10k记录怎么办?我知道最初需要做很多工作。

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

如果您的静态引用表较小,则可以使用静态联接,但也可以进行更新,从而导致问题。