我的数据分布在多个目录和这些目录中的多个制表符分隔的文件中。总体结构如下所示:
s3://bucket_name/directory/{year}{month}/{iso_2}/{year}{month}{day}_table.bcp.gz
哪里 {year} 是4位数的年份, {month} 是两位数的月份, {day} 是两位数的日和 {iso_2} 是iso2国家代码。我该怎么在雅典娜摆table呢?
{year}
{month}
{day}
{iso_2}
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语句:
MSCK REPAIR TABLE table_name
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.
1条答案
按热度按时间gmxoilav1#
athena使用hive ddl,所以您只需要运行一个普通的hive create语句:
然后通过运行
MSCK REPAIR TABLE table_name
. 如果由于某种原因失败(在athena中有时会失败),则需要为现有目录运行所有add partition语句: