雅典娜表与多个位置

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

我的数据分布在多个目录和这些目录中的多个制表符分隔的文件中。总体结构如下所示:

s3://bucket_name/directory/{year}{month}/{iso_2}/{year}{month}{day}_table.bcp.gz

哪里 {year} 是4位数的年份, {month} 是两位数的月份, {day} 是两位数的日和 {iso_2} 是iso2国家代码。
我该怎么在雅典娜摆table呢?

gmxoilav

gmxoilav1#

athena使用hive ddl,所以您只需要运行一个普通的hive create语句:

CREATE EXTERNAL TABLE table_name(
  col_1 string,
...
  col_n string)
PARTITIONED BY (
   year_month string,
   iso_2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://bucket_name/directory/';

然后通过运行 MSCK REPAIR TABLE table_name . 如果由于某种原因失败(在athena中有时会失败),则需要为现有目录运行所有add partition语句:

ALTER TABLE table_name ADD PARTITION 
     (year_month=201601,iso=US) LOCATION 's3://bucket_name/directory/201601/US/'; 
ALTER TABLE table_name ADD PARTITION 
     (year_month=201602,iso=US) LOCATION 's3://bucket_name/directory/201602/US/';
ALTER TABLE table_name ADD PARTITION 
     (year_month=201601,iso=GB) LOCATION 's3://bucket_name/directory/201601/GB/';
etc.

相关问题