嵌套结构的部分如下所示。在解析嵌套结构并将其放入多行时遇到问题。scala版本是2.11和spark 2.4.4。struct bbdemoimps下的结构键是动态的。
{"rates": {"bbDemoImps": {
"44": {
"imps": 0.0,
"ue": 0.0,
"demoId": "44"
},
"49": {
"imps": 0.0,
"ue": 0.0,
"demoId": "49"
},
"45": {
"imps": 0.0,
"ue": 0.0,
"demoId": "45"
},
"50": {
"imps": 0.0,
"ue": 0.0,
"demoId": "50"
}}}}
尝试将结构强制转换为数组,以便我可以使用explode函数将它们放入单独的行中。
val bbDemoImps = new StructType()
.add($"demoId".string)
.add($"imps".double)
.add($"ue".double)
val structSchema =
new StructType()
.add($"bbDemoImps".array(bbDemoImps))
val v1 = v2.select($"array_field".cast(structSchema))
但这是一个错误。”无法强制转换structbbdemoimps:struct<44:结构demoid:string,imps:double,ue:双,45:structdemoid:string,imps:double,ue:双,49:structdemoid:string,imps:double,ue:双,50:短uctdemoid:string,imps:double,ue:double>到structbbdemoimps:array<结构demoid:string,imps:double,ue:双>;“
这是正确的方法吗?
预期产量:
weekStartDate|demoId|demos|imps|rcImps
20201130|63|0.0|0.0|0.0
20201130|62|0.0|0.0|0.0
非常感谢您的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!