如何检查在火花流中有效执行reduceByKey

时间:2019-05-29 13:15:55

标签: apache-spark spark-streaming

我正在运行Spark 2.3.1独立集群。我的工作是每2分钟用一次Kafka mini批处理,然后将聚合写入某些商店。作业如下所示:

val stream = KafkaUtils.createDirectStream(...)
stream.map(x=> Row(...))
   .flatMap(r=> ... List[Row] )
   .map(r=> (k,r))
   .reduceByKey((r1, r2) => r)
   .map { case (_, v) => v} 
   .foreachRDD { (rdd, time) => // write data}

当我查看DAG时,图片如下

enter image description here 我的问题-就我所知,spark应使用组合器进行reduceByKey操作,这应显着减小混洗大小。为什么DAG没有显示此内容,我该如何检查?

其他问题-如果shuffle大小为2.5G,会打磁盘吗?我应该查看哪些配置属性/指标以检查该作业是否已配置并以最佳方式运行。 对于这项工作,执行程序以10G内存运行

1 个答案:

答案 0 :(得分:1)

第一个问题:reduceByKey在内部调用CombineBykey。因此,您不会在DAG执行上看到差异,即任务相同。

第二个问题,请重新发布。由于您还没有,“舞台详情,随机溢出磁盘”应该会给您指示。