2012-02-28 77 views
18

我通過彈性MapReduce互動對話期間建立的蜂巢表,並從CSV填充它的文件是這樣的:出口蜂巢表的S3存儲

CREATE TABLE csvimport(id BIGINT, time STRING, log STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'; 

LOAD DATA LOCAL INPATH '/home/hadoop/file.csv' OVERWRITE INTO TABLE csvimport; 

我現在想的蜂巢表存儲在一個S3存儲桶,因此一旦我終止MapReduce實例,該表就會被保留。

有誰知道如何做到這一點?

回答

20

是必須導出,並在開始和你的蜂巢會議結束

要做到這一點,你需要創建一個映射到S3存儲和目錄表中的數據導入

CREATE TABLE csvexport (
    id BIGINT, time STRING, log STRING 
) 
row format delimited fields terminated by ',' 
lines terminated by '\n' 
STORED AS TEXTFILE 
LOCATION 's3n://bucket/directory/'; 

將數據插入S3表和插入完成後,該目錄將有一個CSV文件

INSERT OVERWRITE TABLE csvexport 
select id, time, log 
from csvimport; 

你的表現保存,當你創建一個新的蜂巢比如你可以重新導入您的數據

您的表格可以以幾種不同的格式存儲,具體取決於您要使用它的位置。

17

上面的查詢需要使用外部關鍵字,即:

CREATE EXTERNAL TABLE csvexport (id BIGINT, time STRING, log STRING) 
row format delimited fields terminated by ',' lines terminated by '\n' 
STORED AS TEXTFILE LOCATION 's3n://bucket/directory/'; 
INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport; 

另外一種選擇是使用查詢

INSERT OVERWRITE DIRECTORY 's3n://bucket/directory/' select id, time, log from csvimport; 

該表存儲在HIVE默認分隔符S3目錄。

+0

這不會複製標題。有沒有辦法複製標題呢? – 2016-11-02 07:22:50

0

如果您可以訪問AWS控制檯,並有「Access Key Id」和「Secret Access Key」爲您的帳戶

你可以試試這個太..

CREATE TABLE csvexport(id BIGINT, time STRING, log STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
LOCATION 's3n://"access id":"secret key"@bucket/folder/path'; 

現在插入數據的其他如上所述。

INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;