如何从 Amazon Athena 查询 Parquet 数据?

raj*_*ari 9 amazon-web-services parquet amazon-athena

Athena 使用 S3 表中的字段创建一个临时表。我已经使用 JSON 数据完成了这项工作。您能帮我了解如何使用镶木地板数据创建表格吗?

我试过以下:

  1. 将示例 JSON 数据转换为镶木地板数据。
  2. 将 Parquet 数据上传到 S3。
  3. 使用 JSON 数据列创建临时表。

通过这样做,我可以执行查询,但结果为空。

这种方法是正确的还是对镶木地板数据有任何其他方法可以遵循?

示例 json 数据:

{"_id":"0899f824e118d390f57bc2f279bd38fe","_rev":"1-81cc25723e02f50cb6fef7ce0b0f4f38","deviceId":"BELT001","timestamp":"2016-12-21T13:04:10:066Z","orgid":"fedex","locationId":"LID001","UserId":"UID001","SuperviceId":"SID001"},
{"_id":"0899f824e118d390f57bc2f279bd38fe","_rev":"1-81cc25723e02f50cb6fef7ce0b0f4f38","deviceId":"BELT001","timestamp":"2016-12-21T13:04:10:066Z","orgid":"fedex","locationId":"LID001","UserId":"UID001","SuperviceId":"SID001"}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 10

如果您的数据已成功以 Parquet 格式存储,则您将创建一个引用这些文件的表定义。

下面是一个使用 Parquet 文件的示例语句:

CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs_pq (
  request_timestamp string,
  elb_name string,
  request_ip string,
  request_port int,
  ...
  ssl_protocol string )
PARTITIONED BY(year int, month int, day int) 
STORED AS PARQUET
LOCATION 's3://athena-examples/elb/parquet/'
tblproperties ("parquet.compress"="SNAPPY");
Run Code Online (Sandbox Code Playgroud)

此示例取自 AWS 博客文章使用 Amazon Athena 在 S3 中分析数据,该文章出色地解释了在 Amazon Athena 中使用压缩和分区数据的好处。