2017-01-23 126 views
1

我的數據分佈在這些目錄內的多個目錄和多個製表符分隔的文件中。一般的結構是這樣的:具有多個位置的雅典娜表

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

其中{year}是4位數的年份,{month}是2位數月份,{day}是2位數的日期和{iso_2}是ISO2國家代碼。

我該如何將它設置爲雅典娜的表格?

回答

3

雅典娜採用蜂巢DDL,所以你只需要運行一個正常的蜂巢創建聲明:

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註冊這些目錄作爲新的分區所需的表。如果由於某種原因失敗(它有時的確雅典娜),你需要運行所有加載分區報表您現有的目錄:

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. 
+0

有沒有辦法到'ALTER'的自動完成?就像雅典娜拿起他們一樣,而不必一遍又一遍地指定它們?從[這裏](http://blog.zhengdong.me/2012/02/22/hive-external-table-with-partitions/)看起來我們不能。 –