使用athena alter table语句创建分区

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

“create table”语句工作正常。

  1. CREATE EXTERNAL TABLE default.no_details_2018_csv (
  2. `id` string,
  3. `client_id` string,
  4. `client_id2` string,
  5. `id_1` string,
  6. `id_2` string,
  7. `client_id3` string,
  8. `code_1` string,
  9. `code_2` string,
  10. `code_3` string
  11. )
  12. STORED AS PARQUET
  13. LOCATION 's3://some_bucket/athena-parquet/no_details/2018/'
  14. 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个月)分区。

rhfm7lfc

rhfm7lfc1#

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

  1. CREATE EXTERNAL TABLE default.no_details_table (
  2. `id` string,
  3. `client_id` string,
  4. `client_id2` string,
  5. `id_1` string,
  6. `id_2` string,
  7. `client_id3` string,
  8. `code_1` string,
  9. `code_2` string,
  10. `code_3` string
  11. )
  12. PARTITIONED BY (year string)
  13. STORED AS PARQUET
  14. LOCATION 's3://some_bucket/athena-parquet/no_details/'
  15. tblproperties ("parquet.compress"="SNAPPY");

您可以添加一个分区作为

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

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

  1. PARTITIONED BY (day string)

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

  1. s3://some_bucket/athena-parquet/no_details/20181013/
展开查看全部

相关问题