0
我具有相同長度的兩個RDDS,我想隨機壓縮在一起(例如,第一RDD是(A,B,C,d)和第二個是(W,X, Y,Z)和我要像一個隨機拉鍊(AX,BZ,CW,DY)。什麼是做到這一點使用pySpark的快捷方式?火花:加擾RDDS和壓縮它們
我具有相同長度的兩個RDDS,我想隨機壓縮在一起(例如,第一RDD是(A,B,C,d)和第二個是(W,X, Y,Z)和我要像一個隨機拉鍊(AX,BZ,CW,DY)。什麼是做到這一點使用pySpark的快捷方式?火花:加擾RDDS和壓縮它們
這是你需要什麼?
x = sc.parallelize(['A','B','C','D'])
y = sc.parallelize(['W','X','Y','Z'])
x = x.takeSample(False, 4)
y = y.takeSample(False, 4)
combine = zip(x,y)
combine
>> [('D', 'Z'), ('B', 'X'), ('A', 'W'), ('C', 'Y')]
你可以:
from pyspark.sql.functions import rand
s = lambda x: (x[1], x[0])
def shuffle(rdd):
return rdd.map(lambda x: (x,)) \
.toDF(["data"]).withColumn("rand", rand()) \
.orderBy("rand") \
.rdd.map(lambda x: x.data)
shuffle(rdd1).zipWithIndex().map(s).join(rdd2.zipWithIndex().map(s)).values()
我不想'take',我希望有一個新的RDD與壓縮舊RDDS隨機順序看起來LIK。具有'1.0'分數的'sample'不會重新排序。 – cgreen