从雅典娜查询 s3 中的文件

query from athena a file in s3

我是这方面的新手。我在亚马逊 s3 中有这个文件。

如何从 Athena 查询这个 .tar.gz?

我假设我必须以某种方式解压缩并“恢复”到“athena”?但是我不知道怎么做。

您不能查询压缩包。 Athena 需要 gzip 或未压缩的文本文件。其他选项是 ORC 或 parquet 文件。您需要解压该文件并创建一个仅包含 .txt 的 gzip 文件。

您可以在 AWS Athena 中直接查询 .gz 格式的文件以及任何平面文件。如果您的 tar 文件包含多个 .gz 文件并且它们的文件格式相同,那么您不需要将它们压缩为 .tsv。

因为您已经转换为 .tsv 文件,请确保将相同格式的文件放入文件夹中,例如 s3://bucketname/folder/file1.gz s3://bucketname/folder/file2.gz

等file1 和 file2 应该具有相同的结构。

然后在此基础上定义您的 AWS Athena table。下面的示例脚本 -

CREATE EXTERNAL TABLE table_name (
yr INT,
 quarter INT,
 month INT,
 dayofmonth INT,
 dayofweek INT,
 flightdate STRING
)
 PARTITIONED BY (year STRING)
 ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  ESCAPED BY '\'
  LINES TERMINATED BY '\n'
 LOCATION 's3://bucketname/folder/';

保持同类文件不是强制性的,但建议您可以在同一文件夹下添加删除文件,并且每次有更改时只更新分区信息。

运行 MSCK REPAIR TABLE 每次向此 table 添加新分区时刷新分区元数据 table。

MSCK REPAIR TABLE table_name ;

参考 - https://docs.aws.amazon.com/athena/latest/ug/lazy-simple-serde.html#tsv-example