簡體   English   中英

如何在Spark(Python)中將兩個rdd合並到rdd

[英]How to combine two rdd into on rdd in spark(Python)

例如,有兩個rdds,例如“ rdd1 = [[1,2 ,, [3,4]],rdd2 = [[5,6],[7,8]]”。 以及如何將兩者組合為這種樣式:[[1,2,5,6],[3,4,7,8]]。 有什么功能可以解決這個問題?

您基本上需要使用rdd.zip()將rdds組合在一起,並對生成的rdd執行map操作,以獲得所需的輸出:

rdd1 = sc.parallelize([[1,2],[3,4]])
rdd2 = sc.parallelize([[5,6],[7,8]])

#Zip the two rdd together
rdd_temp = rdd1.zip(rdd2)

#Perform Map operation to get your desired output by flattening each element
#Reference : https://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python
rdd_final = rdd_temp.map(lambda x: [item for sublist in x for item in sublist])

#rdd_final.collect()
#Output : [[1, 2, 5, 6], [3, 4, 7, 8]]

您也可以在此鏈接上在Databricks筆記本上查看結果。

使用rdd join實現此目的的另一種(較長)方法:

rdd1 = sc.parallelize([[1,2],[3,4]])
rdd2 = sc.parallelize([[5,6],[7,8]])

# create keys for join
rdd1=rdd1.zipWithIndex().map(lambda (val, key): (key,val))
rdd2=rdd2.zipWithIndex().map(lambda (val, key): (key,val))
# join and flatten output
rdd_joined=rdd1.join(rdd2).map(lambda (key, (val1, val2)): val1+val2)

rdd_joined.take(2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM