我遇到了一个问题,就一个非常大的kafka主题启动火花流媒体,这个主题已经有大约1.5亿个数据,并且主题正在以超快的速度增长。
当我尝试通过设置kafka参数(“auto.offset.reset” - >“最小”)来启动火花流和从本主题开头读取数据时,它总是尝试完成所有1.5亿个数据处理第一批并返回“java.lang.OutOfMemoryError:超出GC开销限制”错误。虽然这个火花流应用程序中没有很多计算。
我是否可以在前几批中处理本主题中的历史数据,但不能在第一批中处理所有历史数据?
提前谢谢! 詹姆斯
答案 0 :(得分:1)
您可以使用以下火花配置spark.streaming.kafka.maxRatePerPartition
控制spark kafka输入读取速率。
您可以通过提供每批要处理的文档数来进行配置。
sparkConf.set("spark.streaming.kafka.maxRatePerPartition","<docs-count>")
每批配置过程<docs-count>*<batch_interval>
以上。
您可以找到有关上述配置{{3}}的更多信息。