【问题标题】:How spark get number of tasks reading parquet files?spark如何获取读取镶木地板文件的任务数量?
【发布时间】:2020-08-15 09:06:27
【问题描述】:

我在 s3 存储桶的同一目录下有 271 个 parquet 小文件(9KB/文件)。那么,我想了解 spark 在读取这些文件时如何获取任务数?

集群是 aws EMR 5.29,我的 sparkConf 有 --num-executors 2--executor-cores 2

当我运行spark.read.parquet("s3://bucket/path").rdd.getNumPartitions 时,我得到了 9 个任务/分区,我的问题是为什么?它是如何工作的?

【问题讨论】:

  • 你还没有为你的 read call 指定任何选项?
  • 您的默认并行度是多少。可能是 9。我试图从 spark.read 中读取 6 个小文件......它给了我 2 个默认分区
  • @RamGhadiyaram,我没有指定任何选项,只是spark.read.parquet()!默认并行度为 8! scala> spark.sparkContext.defaultParallelism res0: Int = 8 我将其更改为 spark-shell conf spark.default.parallelis=2 但它保持 9 个任务处于读取状态
  • 我可以看到,如果我将参数spark.sql.files.maxPartitionBytes 增加到 256mb(默认为 128mb),则在默认并行度方面,任务将减少到 8 个。但是如果我的 maxPartitionBytes 为 128mb,我一直不明白为什么要执行 9 个任务?

标签: apache-spark parquet amazon-emr


【解决方案1】:

我找到了答案here

Min(defaultMinSplitSize (128MB, `spark.sql.files.maxPartitionBytes`,
    Max(openCostInByte(8MB, `spark.sql.files.openCostInBytes`,
        totalSize/defaultParallelism)
)

【讨论】:

    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2017-01-22
    • 2021-08-27
    • 2020-02-03
    • 2019-01-09
    • 1970-01-01
    • 2020-01-20
    • 2019-08-04
    相关资源
    最近更新 更多