在 athena aws 中具有不同分区的表

Posted

技术标签:

【中文标题】在 athena aws 中具有不同分区的表【英文标题】:table with different partitions in athena aws 【发布时间】:2019-04-15 12:21:52 【问题描述】:

是否可以在 athena 中创建具有不同类型分区的表?

例如,每年有一个分区,每个月有一个分区,另一个分区只有 id

    CREATE EXTERNAL TABLE IF NOT EXISTS table_example(
        name string,  
        adress 
        PARTITIONED BY (year string, month string, day string) ----> partition 1
        PARTITIONED BY (id int) -----------> partition 2

ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')
LOCATION 's3://example/folder/';

可能有类似的情况吗?

谢谢

【问题讨论】:

不是您要的,而是类似的东西 -> Athena 使用 Apache Hive 风格的数据分区。您可以跨多个维度(例如,月、周、日、小时或客户 ID)或所有维度对数据进行分区。 aws.amazon.com/blogs/big-data/… 【参考方案1】:

不,这是不可能的。 分区不是“索引”。它是文件系统(或类似文件系统的存储,此处为:s3)上的数据布局。 您所追求的将是数据的两个独立副本。为此,您可以简单地创建两个表,一个按年/月/日分区,第二个按 id 分区。

但是,假设id 是您表中的标识符,您确实不想按id 进行分区。不过,您可能有兴趣探索按 id 进行分桶。

【讨论】:

以上是关于在 athena aws 中具有不同分区的表的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Glue Scala 查询 Athena(添加分区)

AWS Athena 分区获取所有路径

AWS Athena 创建表和分区

爬虫可以更新 AWS Glue 中导入的表吗?

AWS Glue 数据目录,具有 S3 文件上的分区表和分区中的不同架构

Athena 在某些查询中忽略 LIMIT