如何使用spark streaming更好的处理kafka topic中海量的历史数据

how to better process the huge history data in the kafka topic by using spark streaming

我在启动关于一个非常大的 kafka 主题的 spark streaming 时遇到了一个问题,这个主题中已经有大约 1.5 亿条数据,而且这个主题的增长速度非常快。

当我尝试通过设置kafka参数("auto.offset.reset" -> "smallest")从本主题的开头开始启动spark streaming并读取数据时,它总是尝试完成所有1.5亿条数据处理在第一批中 return 出现 "java.lang.OutOfMemoryError: GC overhead limit exceeded" 错误。不过这个 spark stream 应用程序中没有太多计算。

能否有办法处理前几批而不是全部在第一批处理该主题的历史数据?

提前致谢! 詹姆斯

您可以使用以下 spark 配置控制 spark kafka-input 读取速率 spark.streaming.kafka.maxRatePerPartition .

您可以通过指定每批要处理的文档数量来进行配置。

sparkConf.set("spark.streaming.kafka.maxRatePerPartition","<docs-count>")

以上配置过程每批 <docs-count>*<batch_interval> 条记录。

您可以找到有关上述配置的更多信息 here