2017-08-15 229 views
1

如何將RDD [Array [Row]]轉換爲RDD [Row]?將RDD [Array [Row]]轉換爲RDD [Row]

詳情:

我在我的解析函數返回類型數組[行]對一些數據和行一些數據的一些使用情況。我將如何將這兩個轉換爲RDD [行]以供進一步使用?

代碼示例

private def getRows(rdd: RDD[String], parser: Parser): RDD[Row] = { 

var processedLines = rdd.map { line =>  
    map(p => parser.processBeacon(line) } 

val rddOfRowsList = processedLines.map { x => 
    x match { 
    case Right(obj) => obj.map { p =>   
     MyRow.getValue(p) 
    }//I can use flatmap here 
    case Left(obj) =>   
     MyRow.getValue(obj) 
    }//Cant use flatmap here 
} 

// Here I have to convert rddOfRowsList to RDD[Row] 
//????? 
val rowsRdd =????? 
// 


rowsRdd 

}

def processLine(logMap: Map[String, String]):Either[Map[String, Object], Array[Map[String, Object]]] = 
     { 
      //process 
     } 
+0

您可以添加一些代碼以及一些示例輸入和想要的輸出嗎? – Shaido

回答

0

使用flatMap;

rdd.flatMap(identity) 
+0

在第二種情況下,我得到一行,flatmap將不起作用 –

0

您CA使用flatmap獲得新RDD,然後用工會撰寫他們。

0

使用flatMap扁平化RDD的內容

+0

雖然這可能是一個有價值的提示,以解決問題,一個很好的答案也表明解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –

相關問題