【问题标题】:data distribution in spark dataframes while reading files from s3从 s3 读取文件时 Spark 数据帧中的数据分布
【发布时间】:2022-09-25 23:49:33
【问题描述】:

我正在尝试将 1TB 的 parquet 数据从 s3 读取到 spark 数据帧中,并分配了 80 个具有 30 gb 和 5 个内核的执行程序来处理和 ETL 数据。

但是,我看到数据在执行程序之间分配不均,以便在读取数据时利用内核。我的理解是输入被分成块然后平均分配给执行者进行处理。我没有使用任何类型的洗牌或连接,解释计划也没有任何散列分区或任何类型的聚合。请建议这是否是预期的,以及我们如何更好地重新分配数据以利用所有核心。

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    您可以尝试通过设置 spark.sql.files.maxPartitionBytes 来平衡读入更大分区的数据量:

    spark.sql.files.maxPartitionBytes
    默认值:134217728 (128 MB)
    说明:最大 读取文件时打包到单个分区中的字节数。 此配置仅在使用基于文件的源时有效 例如 Parquet、JSON 和 ORC。
    从 2.0.0 开始

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 2020-02-04
      • 2018-11-09
      • 2017-01-16
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      相关资源
      最近更新 更多