Apache spark 为什么Spark要确定7个分区?
我有一个拼花地板目录,有5个文件,如下所示: 我正在使用Spark 2.2版本,并使用以下代码阅读此目录: 我不清楚为什么Spark会在parquet目录中有5个文件(每个文件的大小都小于块大小)时确定7个分区(alternateDF.rdd().getNumPartitions())? 5个任务有输入记录,但最后2个任务有0个输入记录,但输入数据非零。你能解释一下每项任务的行为吗 @Aman 你可以问一个老问题 简单地说,下面是计算分区数所依赖的3个参数(从上面的链接)Apache spark 为什么Spark要确定7个分区?,apache-spark,apache-spark-sql,parquet,hortonworks-data-platform,Apache Spark,Apache Spark Sql,Parquet,Hortonworks Data Platform,我有一个拼花地板目录,有5个文件,如下所示: 我正在使用Spark 2.2版本,并使用以下代码阅读此目录: 我不清楚为什么Spark会在parquet目录中有5个文件(每个文件的大小都小于块大小)时确定7个分区(alternateDF.rdd().getNumPartitions())? 5个任务有输入记录,但最后2个任务有0个输入记录,但输入数据非零。你能解释一下每项任务的行为吗 @Aman 你可以问一个老问题 简单地说,下面是计算分区数所依赖的3个参数(从上面的链接) spark.de
(大致翻译为可用于 (应用程序)spark.default.parallelism
(默认128MB)spark.sql.files.maxPartitionBytes
(默认4MB)spark.sql.files.openCostInBytes
Spark源代码至感谢您的回复,但我无法从上述逻辑中获得此数字。为了进一步简化问题,我尝试使用CSV文件作为spark.read函数的输入。观察结果-CSV目录中的5个文件(每个文件大小约为40 MB)为我提供了10个分区CSV目录中的3个文件(每个文件大小约为60 MB)给了我9个无法理解此Spark行为的分区Park.default.parallelism为8,Spark.sql.files.maxPartitionBytes为128MB您是否仅使用一个大文件进行了测试,并看到了相同的行为?还是只有一个以上的文件小于128MB?我读了一个233MB大小的CSV文件,它给了我2个分区。但当我加载小文件时,它会给我提供不同数量的分区,正如我在上一篇评论中提到的。我的问题更多的是关于小文件分区。它们是如何精确计算的?