【发布时间】:2019-11-11 01:46:24
【问题描述】:
我们有批处理管道将文件(主要是 csv)写入 s3 存储桶。其中一些管道每分钟写入一次,其中一些每 5 分钟写入一次。目前,我们有一个批处理应用程序,它每小时运行一次,处理这些文件。
企业希望每 5 分钟提供一次数据。相反,我们决定使用 apache spark 结构化流并实时处理数据,而不是每 5 分钟运行一次批处理作业。我的问题是生产这个解决方案有多容易/困难?
我唯一担心的是如果检查点位置损坏,删除检查点目录将重新处理过去 1 年的数据。有没有人使用 s3 使用 spark 结构化流制作任何解决方案,或者您认为 flink 更适合这个用例?
如果您认为有更好的架构/模式来解决这个问题,请指出正确的方向。
ps:我们已经考虑过将这些文件放入kafka,但由于带宽的可用性和文件的大小,我们排除了。
【问题讨论】:
-
使用一些可靠的数据存储来存储检查点。如果您使用的是 HDFS,请增加检查点位置的复制因子。
-
Flink 可用于查看您的 s3 存储桶中的文件并对其进行处理。检查ci.apache.org/projects/flink/flink-docs-release-1.8/dev/…,您可以将
FileProcessingMode.PROCESS_ONCE设置为只处理一次。
标签: apache-spark bigdata apache-flink flink-streaming spark-structured-streaming