使用athena alter table语句创建分区

iyfjxgzm  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(277)

“create table”语句工作正常。

CREATE EXTERNAL TABLE default.no_details_2018_csv (
  `id` string,
  `client_id` string,
  `client_id2` string,
  `id_1` string,
  `id_2` string,
  `client_id3` string,
  `code_1` string,
  `code_2` string,
  `code_3` string
)
STORED AS PARQUET
LOCATION 's3://some_bucket/athena-parquet/no_details/2018/'
tblproperties ("parquet.compress"="SNAPPY");

2018年可用Parquet格式的数据可在该桶/文件夹中找到。
1) 如何将分区添加到此表中?我需要将2019年的数据添加到同一个表中,方法是引用s3://some\u bucket/athena parquet/no\u details/2019/这两个年份的数据都以parquet(snappy)格式提供。
2) 有没有可能按月份而不是按年份划分呢?换句话说,用24个分区代替2个分区可以吗?新的目标表是否也会像源数据一样具有Parquet格式?上面提到的代码2列类似于“20181013133839”。我需要使用前4个字符的年度(或6个月)分区。

t1rydlwq

t1rydlwq1#

第一个表需要创建为 EXTERNAL TABLE 看看这个
样品-

CREATE EXTERNAL TABLE default.no_details_table (
  `id` string,
  `client_id` string,
  `client_id2` string,
  `id_1` string,
  `id_2` string,
  `client_id3` string,
  `code_1` string,
  `code_2` string,
  `code_3` string
)
PARTITIONED BY (year string)
STORED AS PARQUET
LOCATION 's3://some_bucket/athena-parquet/no_details/'
tblproperties ("parquet.compress"="SNAPPY");

您可以添加一个分区作为

ALTER TABLE default.no_details_table ADD PARTITION (year='2018') LOCATION 's3://some_bucket/athena-parquet/no_details/2018/';

如果您希望每个月或每天有更多的分区,请使用创建表

PARTITIONED BY (day string)

但你需要把一天的数据放到路径上-

s3://some_bucket/athena-parquet/no_details/20181013/

相关问题