将嵌套的动态结构解析为行

ua4mk5z4  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(360)

嵌套结构的部分如下所示。在解析嵌套结构并将其放入多行时遇到问题。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

非常感谢您的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题