如何通过使用spark streaming更好地处理kafka主题中的巨大历史数据

时间:2016-06-13 19:05:08

标签: apache-kafka spark-streaming

我遇到了一个问题,就一个非常大的kafka主题启动火花流媒体,这个主题已经有大约1.5亿个数据,并且主题正在以超快的速度增长。

当我尝试通过设置kafka参数(“auto.offset.reset” - >“最小”)来启动火花流和从本主题开头读取数据时,它总是尝试完成所有1.5亿个数据处理第一批并返回“java.lang.OutOfMemoryError:超出GC开销限制”错误。虽然这个火花流应用程序中没有很多计算。

我是否可以在前几批中处理本主题中的历史数据,但不能在第一批中处理所有历史数据?

提前谢谢! 詹姆斯

1 个答案:

答案 0 :(得分:1)

您可以使用以下火花配置spark.streaming.kafka.maxRatePerPartition控制spark kafka输入读取速率。

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

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

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

您可以找到有关上述配置{{3}}的更多信息。