Amazon web services AWS Glue-将列更改为数组或结构类型
最近我开始使用AWS胶水读取S3上的一些文件 在花了很多时间得到正确的爬虫程序后,我有三张桌子。其中一个称为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”列声明
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上的一些其他问题,并在爬虫程序中选择了此设置:
使用表中的元数据更新所有新分区和现有分区。
但是列的类型没有改变
---编辑
我唯一想到的是编写一个自定义分类器,但希望我能避免这种情况