我有两个大的json文件,我们通过kafka流式传输。因此,其中一个文件被推入Topic1的Patition 0中,另一个文件被推入Topic1的分区1中。我们使用带有水印的火花流查询来加入这些文件并执行必要的计算。 尽管我们正在加入这些文件并执行简单的计算,但我们在Spark UI中确实发现Spark引擎完成了200多个任务,耗时超过6分钟。这些是具有2个内核和8 GB的盒子上的统计数据拉姆。
以下是我们有的几个问题: 1)为什么这些简单的操作有这么多任务? 2)大型JSON是否会在多用途执行器之间分割? 根据我的理解,无法对JSON的拆分部分执行操作。它必须是执行者之一。 这是否意味着我们不能在多个执行程序之间拆分大型xml或json来提高并行度?
谢谢
答案 0 :(得分:1)
所有关于分区的信息
200是“ Spark Shuffle Partition”参数的默认值,该参数定义了Shuffle之后的分区。在您的情况下,join会造成随机播放,您可以使用$
在Kafka源码中,Kafka中的分区数= Spark中的分区数(在主节点上,有合并的PR可以设置分区数= x * Kafka中的分区,您可以在其中定义x-它不会发布还没成功)