【问题标题】:How to Query parquet data from Amazon Athena?如何从 Amazon Athena 查询镶木地板数据?
【发布时间】:2017-08-04 19:30:38
【问题描述】:

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

我尝试了以下方法:

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

【问题讨论】:

  • 您能分享一下您的 Athena 表定义吗?您使用什么工具生成 Parquet 文件?
  • 如果您执行SELECT * FROM foo LIMIT 5,它会返回任何数据吗?如果不是,那么您的表定义无效。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您的数据已成功以 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 中使用压缩和分区数据的好处。

    【讨论】:

    • 可以排除分区吗?例如,仅包括第 1、3、5 天并排除所有其他日期。
    • 我假设表数据在 s3 上的数据发生变化时更新?这意味着 A)当 s3 上有删除规则时,表中的数据被删除 B)当 S3 上添加新日期时,数据被添加到表中
    【解决方案3】:

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

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

    MSCK 修复表 {tablename}

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 2020-11-02
      • 2021-12-13
      • 2021-12-06
      • 2019-06-30
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多