2017-08-15 18 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

2行目の場合、フラットマップは機能しません –

0

フラットマップを使用して新しいrddを取得し、次にunionを使用して作成します。

0

フラットマップを使用してRDDの内容を整える

+0

これは問題を解決するための貴重なヒントになるかもしれませんが、良い答えでもその解決方法が示されます。あなたが意味することを示すサンプルコードを提供するために[編集]してください。代わりに、これをコメントとして書くことを検討してください。 –

関連する問題