Apache spark Spark';为Hadoop分区计算的默认分区?

Apache spark Spark';为Hadoop分区计算的默认分区?,apache-spark,hadoop,Apache Spark,Hadoop,我正在阅读,关于分区,他说 默认情况下,为每个HDFS分区创建一个分区,通过 默认值为64MB 我对HDFS不是非常熟悉,但复制这一说法时遇到了一些问题。我有一个名为Reviews.csv的文件,它是亚马逊食品评论的330MB文本文件。给定默认的64MB块,我希望上限(330/64)=6个分区。但是,当我将文件加载到Spark Shell中时,我得到了9个分区: scala> val tokenized_logs = sc.textFile("Reviews.csv") tokenized

我正在阅读,关于分区,他说

默认情况下,为每个HDFS分区创建一个分区,通过 默认值为64MB

我对HDFS不是非常熟悉,但复制这一说法时遇到了一些问题。我有一个名为
Reviews.csv
的文件,它是亚马逊食品评论的330MB文本文件。给定默认的64MB块,我希望
上限(330/64)=6个
分区。但是,当我将文件加载到Spark Shell中时,我得到了9个分区:

scala> val tokenized_logs = sc.textFile("Reviews.csv")
tokenized_logs: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[1] at textFile at <console>:24

scala> tokenized_logs
res0: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[1] at textFile at <console>:24

scala> tokenized_logs.partitions
res1: Array[org.apache.spark.Partition] = Array(org.apache.spark.rdd.HadoopPartition@3c1, org.apache.spark.rdd.HadoopPartition@3c2, org.apache.spark.rdd.HadoopPartition@3c3, org.apache.spark.rdd.HadoopPartition@3c4, org.apache.spark.rdd.HadoopPartition@3c5, org.apache.spark.rdd.HadoopPartition@3c6, org.apache.spark.rdd.HadoopPartition@3c7, org.apache.spark.rdd.HadoopPartition@3c8, org.apache.spark.rdd.HadoopPartition@3c9)

scala> tokenized_logs.partitions.size
res2: Int = 9
然而,根据我的计算,应该有
天花板(135/4)=3个
分区,而不是4个

我在本地运行一切,在我的MacBookPro上。有人能解释一下如何计算HDFS的默认分区数吗?

来自:

默认情况下,Spark为文件的每个块创建一个分区 (HDFS中的块默认为128MB),但您也可以请求 通过传递较大的值来增加分区数。注意你 分区不能少于块

128MB只是默认的HDFS块大小,但对于任何文件,实际上都可能有所不同。在您的情况下,分区的数量意味着您的文件是使用非默认块大小写入的(或者更可能由多个较小的文件组成)

有关确定HDFS文件拆分成的块数的方法,请参阅。

来自:

默认情况下,Spark为文件的每个块创建一个分区 (HDFS中的块默认为128MB),但您也可以请求 通过传递较大的值来增加分区数。注意你 分区不能少于块

128MB只是默认的HDFS块大小,但对于任何文件,实际上都可能有所不同。在您的情况下,分区的数量意味着您的文件是使用非默认块大小写入的(或者更可能由多个较小的文件组成)


有关确定HDFS文件拆分成的块数的方法,请参阅。

谢谢。使用非默认块大小写入文件的典型原因是什么?我不记得在HDFS上调整过任何配置。这完全取决于文件的编写方式。谢谢。使用非默认块大小写入文件的典型原因是什么?我不记得在HDFS上调整过任何配置。这完全取决于文件的编写方式。
scala> val raw_reviews = sc.textFile("Reviews_Smaller.csv")
raw_reviews: org.apache.spark.rdd.RDD[String] = Reviews_Smaller.csv MapPartitionsRDD[11] at textFile at <console>:24

scala> raw_reviews.partitions.size
res7: Int = 4