当使用glueContext.create_dynamic_frame.from_options
方法加载JSON时,如果JSON包含空数组,则无法推断数组的数据类型,因此我得到如下模式:
root
|-- myemptyarray: array (nullable = true)
| |-- element: null (containsNull = true)
是否可以使用resolvchoice操作来改变数组类型?
我试图在规范中指定像("myemptyarray": "cast:array(int)")
和许多其他的东西,但没有成功。不幸的是,从awsglue-libs中的python API代码中,我无法推断出如何能够在此转换期间将元素类型传递给ArrayType。
如果有人发现如何做到这一点,或者如果它甚至是可能的,它将非常感激在这里分享:)
编辑:我知道这是可能使用纯火花,我只是想知道是否有一种方法在DynamicFrame级别使用Glue来做到这一点。
我认为对于这个用例,您需要直接使用Spark API。
dynamic_frame.toDF().withColumn('int_array', col('myemptyarray').cast('array<int>'))
我想你可以在这里使用resolveChoice
,就像在官方文档中解释的那样
dynamic_frame.resolveChoice(specs = [('int_array','cast:array<int>')])