【问题标题】:How partitions are created in spark RDDspark RDD中如何创建分区
【发布时间】:2016-05-11 01:34:30
【问题描述】:

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

假设 HDFS 文件大小为 130 MB。

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

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

真的没有。分区数是根据块大小决定的?

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

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    Here 是一篇很好的文章,描述了输入的分区计算逻辑。

    HDFS 块大小是分区的最大 size。因此,在您的示例中,最小 number 个分区将为 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 个分区。

    【讨论】:

      【解决方案2】:

      您可以运行并检查分区数

      distFile.partitions.size

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-18
        • 2016-01-04
        • 2021-02-24
        • 1970-01-01
        相关资源
        最近更新 更多