如何查询Amazon Athena的镶木地板数据?

时间:2017-03-14 12:44:56

标签: amazon-web-services parquet amazon-athena

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

我试过以下:

  1. 将示例JSON数据转换为镶木地板数据。
  2. 将拼花数据上传到S3。
  3. 使用JSON数据列创建临时表。
  4. 通过执行此操作,我能够执行查询,但结果为空。

    这种方法是正确的还是在镶木地板数据上还有其他方法可以采用吗?

    示例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"}
    

3 个答案:

答案 0 :(得分:2)

如果您的表定义有效但没有获得任何行,请尝试使用

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

MSCK REPAIR TABLE {tablename}

答案 1 :(得分:1)

如果您的数据已成功存储为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博客文章Analyzing Data in S3 using Amazon Athena,该文章非常出色地解释了在Amazon Athena中使用压缩和分区数据的好处。

答案 2 :(得分:0)

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