我正在运行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时,图片如下
我的问题-就我所知,spark应使用组合器进行reduceByKey操作,这应显着减小混洗大小。为什么DAG没有显示此内容,我该如何检查?
其他问题-如果shuffle大小为2.5G,会打磁盘吗?我应该查看哪些配置属性/指标以检查该作业是否已配置并以最佳方式运行。 对于这项工作,执行程序以10G内存运行
答案 0 :(得分:1)
第一个问题:reduceByKey在内部调用CombineBykey。因此,您不会在DAG执行上看到差异,即任务相同。
第二个问题,请重新发布。由于您还没有,“舞台详情,随机溢出磁盘”应该会给您指示。