11

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

我试过以下:

  1. 将示例 JSON 数据转换为 parquet 数据。
  2. 将镶木地板数据上传到 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"}
4

3 回答 3

14

如果您的数据已成功以 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");

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

于 2017-03-14T20:49:10.327 回答
2

如果您的表定义有效但未获得任何行,请尝试此操作

-- MSCK REPAIR TABLE 命令将所有分区加载到表中。-- 此命令可能需要一段时间才能运行,具体取决于要加载的分区数。

MSCK 修复表 {tablename}

于 2017-06-06T16:53:41.963 回答
1

步骤:
1. 创建你的 my_table_json
2. 将数据插入 my_table_json (验证创建的 json 文件在表 'LOCATION' 中是否存在)
3.创建 my_table_parquet:与 my_table_json 相同的创建语句,但需要添加 'STORED AS PARQUET' 子句。
4.运行: INSERT INTO my_table_parquet SELECT * FROM my_table_json

于 2017-03-14T19:54:07.593 回答