【发布时间】: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