簡體   English   中英

spark:如何用另一個RDD的每個分區壓縮一個RDD

[英]spark: how to zip an RDD with each partition of the other RDD

假設我有一個RDD[U] ,它將始終僅包含1個分區。 我的任務是用駐留在n個分區上的另一個RDD[T]的內容填充該RDD。 最終輸出應為nRDD[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.

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