Amazon web services AWS Glue-将列更改为数组或结构类型

Amazon web services AWS Glue-将列更改为数组或结构类型,amazon-web-services,aws-glue,amazon-athena,Amazon Web Services,Aws Glue,Amazon Athena,最近我开始使用AWS胶水读取S3上的一些文件 在花了很多时间得到正确的爬虫程序后,我有三张桌子。其中一个称为raw。它包含按年/月/日期拆分的文件夹中的csv文件 创建的架构将一个特定列event\u功能显示为string 但是,在Athena中运行查询时,我遇到以下错误: HIVE\u PARTITION\u SCHEMA\u不匹配:表和分区架构之间不匹配。这些类型不兼容,无法强制。表“raw”中的“event\u features”列声明为“string”类型,而分区“event\u”列声明

最近我开始使用AWS胶水读取S3上的一些文件

在花了很多时间得到正确的爬虫程序后,我有三张桌子。其中一个称为
raw
。它包含按年/月/日期拆分的文件夹中的csv文件

创建的架构将一个特定列
event\u功能
显示为
string

但是,在Athena中运行查询时,我遇到以下错误:

HIVE\u PARTITION\u SCHEMA\u不匹配:表和分区架构之间不匹配。这些类型不兼容,无法强制。表“raw”中的“event\u features”列声明为“string”类型,而分区“event\u”列声明为“array”类型。

事实上,我检查了,该列的值可以是:

[]
我理解它被视为字符串而不是空数组

[{'type':'value'},{'type':'value'}]
然后正确解释为数组

为什么爬虫会决定字符串,即使它显然是一个JSON结构数组?我能做些什么来修复它?我找不到强制列类型为array/struct.的选项

奇怪的是,类似的列
event\u metrics
具有完全相同的值类型(有时是
[]
有时是json数组),并且正确地定义为array

我查看了StackOverlow上的一些其他问题,并在爬虫程序中选择了此设置:

使用表中的元数据更新所有新分区和现有分区。

但是列的类型没有改变

---编辑 我唯一想到的是编写一个自定义分类器,但希望我能避免这种情况