[英]spark: how to zip an RDD with each partition of the other RDD
假設我有一個RDD[U]
,它將始終僅包含1個分區。 我的任務是用駐留在n個分區上的另一個RDD[T]
的內容填充該RDD。 最終輸出應為n個RDD[U]
分區。
我最初嘗試做的是:
val newRDD = firstRDD.zip(secondRDD).map{ case(a, b) => a.insert(b)}
但是我遇到一個錯誤: Can't zip RDDs with unequal numbers of partitions
我可以在RDD api 文檔中看到一個名為zipPartitions()
的方法。 是否有可能,如果可以的話,使用這種方法將RDD[T]
每個分區壓縮為一個唯一的RDD[U]
分區,並像我上面嘗試的那樣在其上執行映射?
這樣的事情應該起作用:
val zippedFirstRDD = firstRDD.zipWithIndex.map(_.swap)
val zippedSecondRDD = secondRDD.zipWithIndex.map(_.swap)
zippedFirstRDD.join(zippedSecondRDD)
.map{case (key, (valueU, valueT)) => {
valueU.insert(valueT)
}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.