【发布时间】:2017-08-17 14:00:51
【问题描述】:
如何将 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
}
【问题讨论】:
-
你能添加一些你正在做什么的代码以及一些示例输入和想要的输出吗?
-
我遇到了类似的问题。在这里回答stackoverflow.com/q/55702513/6766464
标签: apache-spark apache-spark-sql rdd