让我们说我正在使用spark(scala)从HDFS读取文件。 HDFS块大小为64 MB。
假设,HDFS文件的大小为130 MB。
我想知道在基础RDD中创建了多少个分区
scala> val distFile = sc.textFile("hdfs://user/cloudera/data.txt")
不是吗?分区是根据块大小决定的?
在上述情况下,没有。分区是3?
答案 0 :(得分:3)
Here是一篇很好的文章,描述了输入的分区计算逻辑。
HDFS块大小是分区的最大大小。因此,在您的示例中,分区的最小数量将为3.
partitions = ceiling(input size/block size)
您可以通过将其作为参数传递给sc.textFile
来进一步增加分区数量,如sc.textFile(inputPath,numPartitions)
另一个设置mapreduce.input.fileinputformat.split.minsize
扮演一个角色。您可以将其设置为增加分区的大小(并减少分区数)。因此,如果您将mapreduce.input.fileinputformat.split.minsize
设置为130MB
,那么您将只获得1个分区。
答案 1 :(得分:1)
您可以运行并检查分区数
distFile.partitions.size