Python Pyspark通过RDD中的键将单个RDD转换为多个RDD
我是Pyspark的新手,我正在使用Spark 2.0.2 我使用以下结构将RDD称为Test_RDD:Python Pyspark通过RDD中的键将单个RDD转换为多个RDD,python,apache-spark,pyspark,rdd,data-manipulation,Python,Apache Spark,Pyspark,Rdd,Data Manipulation,我是Pyspark的新手,我正在使用Spark 2.0.2 我使用以下结构将RDD称为Test_RDD: U-Key || V1 || V2 || V3 || ----------------------------------- 1001_01 || 12 || 41 || 21 || 1001_01 || 36 || 43 || 63 || 1001_01 || 60 || 45 || 10 || 1002_03 ||
U-Key || V1 || V2 || V3 ||
-----------------------------------
1001_01 || 12 || 41 || 21 ||
1001_01 || 36 || 43 || 63 ||
1001_01 || 60 || 45 || 10 ||
1002_03 || 84 || 57 || 14 ||
1002_03 || 18 || 49 || 18 ||
1004_01 || 12 || 41 || 22 ||
1004_01 || 16 || 43 || 26 ||
例如,我需要从U键列上可用的唯一值创建新的RDD
RDD_1001_01作为:
U-Key || V1 || V2 || V3 ||
-----------------------------------
1001_01 || 12 || 41 || 21 ||
1001_01 || 36 || 43 || 63 ||
1001_01 || 60 || 45 || 10 ||
RDD_1002_03作为:
U-Key || V1 || V2 || V3 ||
-----------------------------------
1002_03 || 84 || 57 || 14 ||
1002_03 || 18 || 49 || 18 ||
RDD_1004_01组件:
U-Key || V1 || V2 || V3 ||
-----------------------------------
1004_01 || 12 || 41 || 22 ||
1004_01 || 16 || 43 || 26 ||
从1个RDD(测试RDD)到3个RDD(RDD_1001_01、RDD_1002_03、RDD_1004_01),
新RDD的名称应该类似于RDD(Test\RDD中唯一的列名)。Pyspark中是否有任何函数可用于此场景?正如@user6910411所述,单次函数调用是不可能做到这一点的 尽管你给出了答案,但这篇文章确实为你的问题提供了大量的见解:答案的第一句话已经说明了这一点 不可能从单个转换中生成多个RDD*。如果要拆分RDD,必须为每个拆分条件应用筛选器 除此之外,从理论上讲,您可以通过对每个单独的索引进行拆分来实现这一点,而不是对可能较大的RDD进行拆分。 相反,一个简单的
groupByKey
可以在相同的RDD中实现与您的请求类似的功能。根据您的进一步处理,应该提到的是,由于其洗牌操作量过大,因此您需要执行以下操作