如何在spark RDD中创建分区

时间:2016-05-10 17:14:18

标签: apache-spark

让我们说我正在使用spark(scala)从HDFS读取文件。 HDFS块大小为64 MB。

假设,HDFS文件的大小为130 MB。

我想知道在基础RDD中创建了多少个分区

scala> val distFile = sc.textFile("hdfs://user/cloudera/data.txt")

不是吗?分区是根据块大小决定的?

在上述情况下,没有。分区是3?

2 个答案:

答案 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