繁体   English   中英

将RDD [Array [Row]]转换为RDD [Row]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM