【问题标题】:How to split an RDD into two RDDs and save the result as RDDs with PySpark?如何使用 PySpark 将 RDD 拆分为两个 RDD 并将结果保存为 RDD?
【发布时间】:2026-01-08 23:00:02
【问题描述】:

我正在寻找一种方法将一个 RDD 拆分为两个或多个 RDD,并将获得的结果保存为两个单独的 RDD。举个例子:

rdd_test = sc.parallelize(range(50), 1)

我的代码:

def split_population_into_parts(rdd_test):

    N = 2
    repartionned_rdd = rdd_test.repartition(N).distinct()
    rdds_for_testab_populations = repartionned_rdd.glom()

    return rdds_for_testab_populations

rdds_for_testab_populations = split_population_into_parts(rdd_test)

这给出了:

[[0, 2、 4、 6、 8、 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48], [1, 3、 5、 7、 9、 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]]

现在我想将这里的每个列表关联到一个新的 RDD。例如 RDD1 和 RDD2。该怎么办 ?

【问题讨论】:

    标签: python list pyspark rdd pyspark-sql


    【解决方案1】:

    我得到了解决方案:

    def get_testab_populations_tables(rdds_for_testab_populations):
    i = 0
    while i < len(rdds_for_testab_populations.collect()):
        for testab_table in rdds_for_testab_populations.toLocalIterator():
            namespace = globals()
            namespace['tAB_%d' % i] = sc.parallelize(testab_table)
            i += 1
    
    return;
    

    那么你可以这样做:

    print tAB_0.collect()
    print tAB_1.collect()
    etc.
    

    【讨论】:

      最近更新 更多