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

虽然这可能是一个有价值的提示,以解决问题,一个很好的答案也表明解决方案。请[编辑]提供示例代码来展示你的意思。或者,可以考虑将其写为注释。 –

相关问题