[英]Convert RDD[Array[Row]] to RDD[Row]
怎么把RDD [Array [Row]]转换成RDD [Row]?
细节:
我有一些用例,其中我的解析函数为某些数据返回Array [Row]类型,为某些数据返回Row。 如何将它们都转换为RDD [Row]以便进一步使用?
代码样本
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
}
使用flatMap
;
rdd.flatMap(identity)
您可以使用flatmap获取新的rdd,然后使用union进行组合。
使用flatMap修饰RDD的内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.