AWS Glue动态DataFrame中resolveChoice无法转换嵌套多类型列怎么办?
解决AWS Glue动态DataFrame嵌套列类型转换问题
你遇到的问题是因为resolveChoice的路径指定错误,Offset并非顶层字段,而是嵌套在dec数组的element结构体中,必须指定完整的嵌套路径才能生效。
修正后的代码
df = df.resolveChoice(specs=[("dec.element.Offset", "cast:long")])
原理说明
原代码仅指定了Offset,Glue无法定位到嵌套在数组结构体中的该字段,因此不会执行类型转换。使用dec.element.Offset作为路径,能精准定位到目标字段,将其所有可选类型统一转换为long。
验证效果
执行修正后的代码后,输出Schema会符合你的期望:
dec: array -- element: struct |-- Offset: long
额外注意事项
如果存在无法转换为long的字符串值(比如非数字内容),Glue会将其转换为null。如果需要自定义处理这类异常值,可以结合map函数遍历数组元素,对Offset字段做更精细的转换逻辑。
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

