【问题标题】:Spark Structured Streaming large filesSpark结构化流大文件
【发布时间】:2019-01-10 06:37:00
【问题描述】:

我有两个大的 json 文件,我们通过 kafka 流式传输。因此,其中一个文件推送到 Topic1 的 Patition 0 中,另一个文件推送到 Topic1 的分区 1 中。我们使用使用水印的火花流查询来加入这些文件并执行必要的计算。 虽然我们正在加入这些文件并执行简单的计算,但我们确实在 Spark UI 中发现 Spark 引擎完成了 200 多个任务,耗时超过 6 分钟。这些是具有 2 个内核和 8 GB 的盒子上的统计数据公羊。

以下是我们的几个问题: 1)为什么这些简单的操作会有这么多任务? 2) 大型 JSON 是否会在多个执行者之间分裂? 据我了解,无法对 JSON 的拆分部分执行操作。它必须是执行人之一。 这是否意味着我们不能在多个执行器之间拆分大型 xml 或 json 以增加并行度?

谢谢

【问题讨论】:

    标签: apache-spark apache-kafka apache-spark-sql spark-streaming


    【解决方案1】:

    都是关于分区的:

    1. 200 是 Spark Shuffle Partition 参数的默认值,它定义了 shuffle 之后的分区。在您的情况下,加入会导致随机播放您可以使用 spark.sql.shuffle.partitions

    2. 更改它
    3. 在 Kafka 源中,Kafka 中的分区数 = Spark 中的分区数(在 master 上有合并的 PR,可以设置分区数 = x * Kafka 中的分区,您可以在其中定义 x - 它没有发布还好)

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多