Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么Spark要确定7个分区?_Apache Spark_Apache Spark Sql_Parquet_Hortonworks Data Platform - Fatal编程技术网

Apache spark 为什么Spark要确定7个分区?

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

我有一个拼花地板目录,有5个文件,如下所示:

我正在使用Spark 2.2版本,并使用以下代码阅读此目录:

我不清楚为什么Spark会在parquet目录中有5个文件(每个文件的大小都小于块大小)时确定7个分区(alternateDF.rdd().getNumPartitions())? 5个任务有输入记录,但最后2个任务有0个输入记录,但输入数据非零。你能解释一下每项任务的行为吗

@Aman

你可以问一个老问题

简单地说,下面是计算分区数所依赖的3个参数(从上面的链接)

  • spark.default.parallelism
    (大致翻译为可用于 (应用程序)
  • spark.sql.files.maxPartitionBytes
    (默认128MB)
  • spark.sql.files.openCostInBytes
    (默认4MB)

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个分区。但当我加载小文件时,它会给我提供不同数量的分区,正如我在上一篇评论中提到的。我的问题更多的是关于小文件分区。它们是如何精确计算的?