将带有时间戳列的csv加载到athena表

时间:2018-04-29 12:31:57

标签: amazon-s3 amazon-athena

我已经开始在我的S3 FILE上使用Athena Query引擎了 其中一些是时间戳格式列。

我创建了一个包含2列的简单表

CREATE EXTERNAL TABLE `test`(
  `date_x` timestamp, 
  `clicks` int)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://aws-athena-query-results-123-us-east-1/test'
TBLPROPERTIES (
  'has_encrypted_data'='false', 
  'transient_lastDdlTime'='1525003090')

我尝试加载文件并使用Athena进行查询: 看起来像那样:

"2018-08-09 06:00:00.000",12
"2018-08-09 06:00:00.000",42
"2018-08-09 06:00:00.000",22

我尝试过不同类型的时间戳格式,例如DD / MM / YYYY和YYY-MM-DD ......,尝试为每一行设置时区 - 但都没有工作。

我尝试的每个值都显示在Athena中,结果如下:

        date_x  clicks
        1       12
        2       42
        3       22

我尝试过使用带有和不带标头的CSV文件 尝试使用带引号和不带引号, 但他们都显示出叛逃的时间戳。 我在雅典娜的专栏必须是时间戳 - 而不是时区。 请不要使用STRING列或DATE列,这不是我需要的。

CSV文件应如何显示,以便Athena识别Timestamp列?

1 个答案:

答案 0 :(得分:4)

尝试格式:yyyy-MM-dd HH:mm:ss.SSSSSS

文章https://docs.amazonaws.cn/en_us/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html建议:

"Timestamp values in text files must be in the format yyyy-MM-dd HH:mm:ss.SSSSSS, as the following timestamp value shows: 2017-05-01 11:30:59.000000 . "