即时进行类型转换

时间:2018-08-07 12:39:41

标签: amazon-athena

我有一个CSV文件(带有AWS帐单信息),每个字段都以字符串形式存储在引号中,例如:"value"

因此,示例行的一部分如下所示: "234234324223532","First 3 Dashboards per month are free.","2018-08-01 00:00:00","2018-08-01 01:00:00","0.0026881720"

当我如下定义新表时:

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.mytable ( Id INT, Desc STRING, StartTime TIMESTAMP, EndTime TIMESTAMP, Cost DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 's3://MYBUCKET/FOLDER/'

我只能在Desc的结果中看到Select * from mydb.mytable的值

是否可以在create table语句中定义一些转换器?

还是我需要从源文件中删除大多数引号(")?这是非常不可取的。

1 个答案:

答案 0 :(得分:2)

您遇到的问题是Athena正在将所有内容视为字符串。如果将所有列定义为字符串,则应该能够看到所有内容。

您可以尝试使用Serde,在其中可以定义引号char,以便可以接受数据类型:

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.mytable (
  Id INT,
  Desc STRING,
  StartTime TIMESTAMP,
  EndTime TIMESTAMP,
  Cost DOUBLE
  )
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 
  'quoteChar'='\"', 
  'separatorChar'=',') 
LOCATION 's3://MYBUCKET/FOLDER/'

我希望这会有所帮助。

相关问题