gpt4 book ai didi

java - 使用 aws athena 解析 CSV

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:09 24 4
gpt4 key购买 nike

我正在使用来自 Java 代码的 AWS athena 解析 csv 文件。csv中有些列是日期类型,其中一列的值有逗号。

如果雅典娜表是用

行格式 SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'

那么就无法正确解析带逗号的列

但是如果我使用它会正确解析

行格式 SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

但是 OpenCSVSerde 的问题是它要求所有列都是字符串数据类型,我需要在查询中执行日期操作,所以不能使用 OpenCSVSerde.

还有其他解决方案吗?请帮忙!

最佳答案

这两个 SerDes 就是这样设计的,您应该只在数据相对干净的情况下使用 LazySimpleSerDe,例如,它没有用引号括起来的值或没有分隔符值(value)。 OpenCSVSerde 非常适合反序列化值包含在引号中的 CSV 文件;但是,表中的所有列都是 STRING 数据类型。更多信息 here

所以在你的情况下,由于你的数据不干净,解析它并加载到 Athena 的唯一方法是使用 OpenCSVSerde。如果您需要使用日期操作,则需要手动将日期字符串转换/解析为日期对象,使用 date_parse 函数可以很容易地做到这一点。

假设您的日期类型列中有以下字符串数据:

11/13/2017
11/14/2017
11/15/2017
11/16/2017

您可以使用以下查询来选择范围内的日期

select * from somedb.sometable where date_parse(createdate, '%m/%d/%Y') between DATE'2017-11-14' and DATE'2017-11-16';

关于java - 使用 aws athena 解析 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com