如何解决AWS Glue 将列选择解析为数组或结构
没有关于如何解决以下问题的想法。 Glue 数据目录中的表具有以下架构:
root
|-- _id: string
|-- _field: struct
| |-- ref: choice
| | |-- array
| | | |-- element: struct
| | | | |-- value: null
| | | | |-- key: string
| | | | |-- name: string
| | |-- struct
| | | |-- value: null
| | | |-- key: choice
| | | | |-- int
| | | | |-- string
| | | |-- name: string
如果我尝试使用
解决ref
选项
resolved = (
df.
resolveChoice(
specs = [('_field.ref','cast:array')]
)
)
我丢失了记录。
关于我如何做的任何想法:
- 根据
_field.ref
是array
还是struct
过滤 DataFrame - 将
struct
条记录转换为array
条记录,反之亦然
解决方法
我能够通过使用来解决我自己的问题
resolved_df = ResolveChoice.apply(df,choice = "make_cols")
这将在新的 array
列中保存 ref_array
值,在 struct
列中保存 ref_struct
值。
这允许我将 DataFrame 拆分为
resolved_df1 = resolved_df.filter(col("ref_array").isNotNull()).select(col("ref_array").alias("ref"))
resolved_df2 = resolved_df.filter(col("ref_struct").isNotNull()).select(col("ref_struct").alias("ref"))
在仅将数组转换为结构体(使用 explode()
)或使用 array()
将结构体转换为数组后,重新组合它们
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。