Athena 显示没有针对布尔列的值,table 使用胶水爬虫创建
Athena shows no value against boolean column, table created using glue crawler
我正在使用 aws glue csv 爬虫来爬取包含 csv 文件的 s3 目录。爬虫在为每一列创建具有正确数据类型的架构的意义上工作正常,但是,当我从 athena 查询数据时,它不显示布尔类型列下的值。
csv 看起来像这样:
"val","ts","cond"
"1.2841974","15/05/2017 15:31:59","True"
"0.556974","15/05/2017 15:40:59","True"
"1.654111","15/05/2017 15:41:59","True"
而爬虫创建的table是:
Column name Data type
val string
ts string
cond boolean
然而,当我 运行 说 select * from <table_name> limit 10
它 returns:
val ts cond
1 "1.2841974" "15/05/2017 15:31:59"
2 "0.556974" "15/05/2017 15:40:59"
3 "1.654111" "15/05/2017 15:41:59"
有谁知道可能是什么原因吗?
我忘了补充,如果我将 cond
列的数据类型更改为 string
,它会将数据显示为字符串,例如"True"
或 "False"
我不知道为什么 Glue 将 cond
列分类为布尔值,因为 Athena 不会将该值理解为布尔值。我认为这是 Glue 中的一个错误,或者它不是专门针对 Athena 的人工制品。 Athena 期望布尔值是 true
或 false
。我不记得这是否包括字符串的不同大写字母,但无论哪种方式你都会失败,因为它们被引用了。实际的错误是 Glue 没有配置你的 table 以便它从字符串中删除引号,因此 Athena 看到一个布尔列包含 "True"
和引号和所有,这不是受支持的布尔值价值。相反,您会得到 NULL
个值。
您可以尝试将 table 改为使用 OpenCSVSerDe,它支持引用值。
令人惊讶的是 Glue 继续在这样的基本事情上跌跌撞撞。不幸的是,胶水很少值得自己编写一些基本脚本。
我正在使用 aws glue csv 爬虫来爬取包含 csv 文件的 s3 目录。爬虫在为每一列创建具有正确数据类型的架构的意义上工作正常,但是,当我从 athena 查询数据时,它不显示布尔类型列下的值。
csv 看起来像这样:
"val","ts","cond"
"1.2841974","15/05/2017 15:31:59","True"
"0.556974","15/05/2017 15:40:59","True"
"1.654111","15/05/2017 15:41:59","True"
而爬虫创建的table是:
Column name Data type
val string
ts string
cond boolean
然而,当我 运行 说 select * from <table_name> limit 10
它 returns:
val ts cond
1 "1.2841974" "15/05/2017 15:31:59"
2 "0.556974" "15/05/2017 15:40:59"
3 "1.654111" "15/05/2017 15:41:59"
有谁知道可能是什么原因吗?
我忘了补充,如果我将 cond
列的数据类型更改为 string
,它会将数据显示为字符串,例如"True"
或 "False"
我不知道为什么 Glue 将 cond
列分类为布尔值,因为 Athena 不会将该值理解为布尔值。我认为这是 Glue 中的一个错误,或者它不是专门针对 Athena 的人工制品。 Athena 期望布尔值是 true
或 false
。我不记得这是否包括字符串的不同大写字母,但无论哪种方式你都会失败,因为它们被引用了。实际的错误是 Glue 没有配置你的 table 以便它从字符串中删除引号,因此 Athena 看到一个布尔列包含 "True"
和引号和所有,这不是受支持的布尔值价值。相反,您会得到 NULL
个值。
您可以尝试将 table 改为使用 OpenCSVSerDe,它支持引用值。
令人惊讶的是 Glue 继续在这样的基本事情上跌跌撞撞。不幸的是,胶水很少值得自己编写一些基本脚本。