spark结构化流--kafka

我们的场景是通过spark-streaming读取kafka数据,实时持久化到hdfs上。并按day和hour分区。就像这种格式:

kafka:0.10.2.0

hdfs:2.7.3

spark:2.2.0


核心代码如下:

repartition是由于生成文件数量过多,合理合并分区能减少。如果用coalesce会导致任务不能并行(如果是1, 就那就只有一个node运行)。

checkpoint能保证任务挂掉,在kafka数据没有过期前重启能继续正确的运行。但是超过时间会报错Kafka OffSetOutOfRange而导致失败。如果此时你删掉checkpoint dir,任务能正常执行但是会发现它并不会去读取kafka分区的数据。这是因为还有一个地方记录着你的流式处理元信息。

它记录着你流式批次信息,如果不删除,spark-streaming会认为你一直在提交过期的job,导致数据不被处理。


当然,这只是结构化流一点使用心得。更多的文档信息在https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容