【问题标题】:Split RDD into n parts in pySpark在pySpark中将RDD拆分为n个部分
【发布时间】:2016-03-29 10:02:41
【问题描述】:

我想使用 Pyspark 将一个 RDD 分成 n 个等长的部分

如果 RDD 类似于

data = range(0,20)
d_rdd = sc.parallelize(data)
d_rdd.glom().collect()
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]

我想将任意两个随机数组合在一起,比如

[[0,4],[6,11],[5,18],[3,14],[17,9],[12,8],[2,10],[1,15],[13,19],[7,16]]

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    两种方法:

    使用parallelize时设置分区数,并使用函数distinct()

    data = range(0,20)
    d_rdd = sc.parallelize(data, 10).distinct()
    d_rdd.glom().collect()
    

    使用 repartition()distinct()

    data = range(0,20)
    d_rdd = sc.parallelize(data).repartition(10).distinct()
    d_rdd.glom().collect()
    

    【讨论】:

    • 感谢您的回答。我尝试了同样的方法,在我看来,我没有得到确切的分区数量。 o/p 类似于 [[18, 19], [0, 1], [12, 13], [8, 9], [], [6, 7, 16, 17], [2, 3], [14, 15], [10, 11], [4, 5]] 如果你能看到,有一个分区有四个元素,一个分区没有元素。是否可以使用 partitionBy 来获得所需的结果。
    • 添加 distinct() 并试一试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2019-09-19
    • 1970-01-01
    • 2011-03-12
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多