我正在使用DirectAPI在纱线上运行火花流(1.6.1)来读取卡夫卡主题的事件,该主题有50个分区,并在HDFS上编写。我有60秒的间歇时间。我收到了大约500,000条信息,这些信息是在60 Sec下处理的。
火花突然开始接收到1500万到2000万条信息,用了5-6分钟的时间来处理,时间间隔为60秒。我已经配置了"spark.streaming.concurrentJobs=4"。
因此,当批处理需要很长的时间处理火花,启动并发的4个活动任务来处理积压批时,由于批处理间隔对于这样的数据量太小,批处理积压仍会在一段时间内增加。
我对此几乎没有疑问。
'saveAsTextFile'操作。所有文件的记录总数为50份,约为330万份。我已经配置了'spark.streaming.kafka.maxRatePerPartition=50' & 'spark.streaming.backpressure.enabled=true'。
发布于 2021-07-22 14:02:54
我认为有一件事可能会让你感到困惑,那就是工作的长度和频率之间的关系。
从你所描述的情况来看,有了可用的资源,这份工作似乎最终需要5分钟才能完成。然而,您的批处理频率是1分钟。
因此,每1分钟你就会开始一批5分钟才能完成的任务。
因此,最终您将看到HDFS在最初的几分钟内什么也没有收到,然后继续每1分钟接收一些东西(但是从数据进入时起有5分钟的“延迟”)。
https://stackoverflow.com/questions/41184154
复制相似问题