微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 SQL 代码向 athena 中的现有表添加新的分区方案

如何解决使用 SQL 代码向 athena 中的现有表添加新的分区方案

是否可以向 Athena 中当前没有分区的现有表添加分区?如果是这样,请在答案中也写下这样做的语法。

例如:

ALTER TABLE table1 ADD PARTITION (ourDateStringCol = '2021-01-01')

上面的命令会报错:

失败:SemanticException 表未分区但分区规范存在

注意:我已经进行了网络搜索,并且存在 sql 服务器的变体,或者向已经分区表添加一个分区。但是,我个人找不到可以成功地将分区添加到现有非分区表的案例。

这非常类似于: SemanticException adding partiton Hive table

然而,那里给出的答案需要重新创建表格。

我想这样做无需重新创建表格e。

解决方法

Athena 中的分区基于 S3 中的文件夹结构。与将数据加载到磁盘或内存中的标准 RDBMS 不同,Athena 基于扫描 S3 中的数据。这就是您享受服务的规模和低成本的方式。

这意味着您必须将数据以有意义的结构存放在不同的文件夹中,例如 year=2019、year=2020,并确保每年的数据全部且仅在该文件夹中。

>

简单的解决方案是运行 CREATE TABLE AS SELECT (CTAS) 查询,该查询将复制数据并创建可针对分析查询进行优化的新表。您可以选择表格式(例如 Parquet)、压缩(例如 SNAPPY)以及分区模式(例如每年)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。