Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 当底层JSON文件中的时间戳格式发生更改时,在Athena中查询时间戳数据_Amazon Web Services_Amazon Athena_Presto_Aws Glue - Fatal编程技术网

Amazon web services 当底层JSON文件中的时间戳格式发生更改时,在Athena中查询时间戳数据

Amazon web services 当底层JSON文件中的时间戳格式发生更改时,在Athena中查询时间戳数据,amazon-web-services,amazon-athena,presto,aws-glue,Amazon Web Services,Amazon Athena,Presto,Aws Glue,我正在从存储在S3中的JSON文件查询AWS Athena中的数据。我已经使用AWS胶水将所有JSON文件加载到Athena中,到目前为止,它工作得非常好。但是,JSON文件中的时间戳格式已从 2018-03-23 15:00:30.998 到 所以这个表最终会有这样的条目 2018-08-29T07:59:42.803Z 2018-08-29T07:59:42.802Z 2018-08-29T07:59:32.500Z 2018-03-23 15:03:43.232 2018-03-23 1

我正在从存储在S3中的JSON文件查询AWS Athena中的数据。我已经使用AWS胶水将所有JSON文件加载到Athena中,到目前为止,它工作得非常好。但是,JSON文件中的时间戳格式已从

2018-03-23 15:00:30.998

所以这个表最终会有这样的条目

2018-08-29T07:59:42.803Z
2018-08-29T07:59:42.802Z
2018-08-29T07:59:32.500Z
2018-03-23 15:03:43.232
2018-03-23 15:03:44.697
2018-03-23 15:04:11.951
当我试图对完整数据库运行查询时,这会导致解析错误

我如何在AWS Glue(或Athena)中适应这一点,以便在查询时不必拆分数据?我尝试过研究自定义分类器,但我不确定在这种特殊情况下如何使用它们


提前感谢。

不幸的是,您必须统一数据。如果您决定使用“2018-08-29T07:59:50.568Z”格式,您可以使用org.apache.hive.hcatalog.data.JsonSerDe库读取此类数据,该库具有以下serde属性:“timestamp.formats”='yyyy-MM-dd'T'HH:MM:ss.ssz'

我不太确定您对“数据统一”的含义?如您所述,时间戳列有两种格式(2018-08-29T07:59:42.803Z和2018-03-23 15:03:44.697)。您必须统一数据并只使用一种格式。您可以将时间戳值映射为
varchar
?然后,您将能够在SQL中显式地解析它们(或者定义一个这样做的视图),使用CASE语句,检查特定值的格式。这似乎也起到了作用。但事实上,我最终统一了数据。
2018-08-29T07:59:42.803Z
2018-08-29T07:59:42.802Z
2018-08-29T07:59:32.500Z
2018-03-23 15:03:43.232
2018-03-23 15:03:44.697
2018-03-23 15:04:11.951