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

问题描述

我的嵌套结构的部分如下。有麻烦 解析嵌套结构并将其放入多行。 Scala版本是2.11和spark 2.4.4。 struct bbDemoImps下的结构键是动态的。

{"rates": {"bbDemoImps": {
                    "44": {
                        "imps": 0.0,"ue": 0.0,"demoId": "44"
                    },"49": {
                        "imps": 0.0,"demoId": "49"
                    },"45": {
                        "imps": 0.0,"demoId": "45"
                    },"50": {
                        "imps": 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 > 到structbbDemoImps:array > ;;“

这是正确的方法吗?

预期输出:

weekStartDate|demoId|demos|imps|rcImps
20201130|63|0.0|0.0|0.0
20201130|62|0.0|0.0|0.0 

非常感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...