spark sql 类型转换array_如何将RDD [(String,Any)]转换为Array(Row)?

我有一个带有键和值的非结构化RDD。值为RDD [Any],键当前为Strings,RDD [String],主要包含Maps。我想让它们成为Row类型,这样我最终可以创建一个数据帧。这是我的rdd:

除去

除了最后4个键之外,大多数rdd都遵循一个模式,应该如何处理?也许将它们分成自己的rdd,特别是对于reverseDeltas?

由于

修改

根据下面的第一个答案,到目前为止我已经累了。

case class MyData(`type`: List[String], libVersion: Double, id: BigInt)

object MyDataBuilder{

def apply(s: Any): MyData = {

// read the input data and convert that to the case class

s match {

case Array(x: List[String], y: Double, z: BigInt) => MyData(x, y, z)

case Array(a: BigInt, Array(x: List[String], y: Double, z: BigInt)) => MyData(x, y, z)

case _ => null

}

}

}

val parsedRdd: RDD[MyData] = rdd.map(x => MyDataBuilder(x))

它是如何看待匹配任何这些情况的,我如何匹配scala中的Map?打印出null时,我不断回复parsedRdd

你可能感兴趣的:(spark,sql,类型转换array)