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

博客围绕非结构化RDD展开,其值为RDD [Any],键主要是Strings和RDD [String]且多含Maps。博主想将其转换为Row类型以创建数据帧,还提及多数rdd除最后4个键外有模式,给出了部分代码,最后询问如何匹配scala中的Map。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个带有键和值的非结构化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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值