2012-02-28 4 views
18

Я создал таблицу улей через интерактивную сессию Elastic MapReduce и населенной его из CSV файла, как это:Экспортный Hive таблицы в ведро 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; 

таблица хранится в каталоге S3 с HIVE по умолчанию разделителей.

+0

Это не копирует заголовок. есть ли способ скопировать заголовок также? –

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;