AWS Athena 无法将 .csv 整数转换为表值
Posted
技术标签:
【中文标题】AWS Athena 无法将 .csv 整数转换为表值【英文标题】:AWS Athena unable to convert .csv integers to table values 【发布时间】:2017-11-10 22:15:19 【问题描述】:我这里有一个简单的 csv 文件
Joe, 30, Male, 3
Winston, 40, Male, 7
Emily, 18, Female, 5
Wendy, 32, Female, 4
我上传到 AWS 上的 S3 存储桶。然后,使用 Athena,我创建了一个表
正确的 S3 存储桶路径 .csv 作为数据格式 列为name string, age int, gender string, consumed int
表创建成功,但是查询时,只有name
和gender
。对于所有条目,age
和 consumed
列都是空的。有什么想法吗?
【问题讨论】:
描述表显示什么? docs.aws.amazon.com/athena/latest/ug/ddl/describe-table.htmlname string
age int
gender string
consumed int
请发布 DESCRIBE 的实际输出。同时发布您正在运行的查询。
i.imgur.com/XSIUad0.png 这是 DESCRIBE 的结果截图
我怀疑空格会导致解析 CSV 出现问题。逗号后的空格不是 CSV 标准的一部分。
【参考方案1】:
空格是无法在定义的数据类型中获得所需值的原因。只是为了测试的震动,试着把所有的东西都变成字符串并打印出来,你也会在打印的值中看到空格。
我的第一选择是从数据本身中删除空格。但是,如果从数据中删除空格并非易事,您可以将它们保持原样并使用这些列作为字符串创建表。然后您可以通过首先删除所有空格然后转换为 int 在内部将它们转换为 int。例如,
select cast(replace(age, '<whitespace>') as int) from <tablename>
替换将从您的字符串中删除所有空格。然后 cast 会将字符串转换为整数。 消费也可以这样做。
【讨论】:
以上是关于AWS Athena 无法将 .csv 整数转换为表值的主要内容,如果未能解决你的问题,请参考以下文章
在 Zeppelin 中保存 AWS Athena 查询的结果
如何将我的 Bigquery 查询转换为 AWS Athena 查询?
如何在 AWS Athena 中成功将字符串转换为日期类型?