Экспорт таблицы кустов в корзину S3 - PullRequest
20 голосов
/ 29 февраля 2012

Я создал таблицу Hive с помощью интерактивного сеанса Elastic MapReduce и заполнил ее из файла CSV следующим образом:

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;

Теперь я хочу сохранить таблицу Hive в корзине S3, чтобы она сохранялась после завершения экземпляра MapReduce.

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

22 голосов
/ 06 марта 2012

Да, вы должны экспортировать и импортировать свои данные в начале и в конце сеанса улья.

. Для этого вам необходимо создать таблицу, сопоставленную с корзиной 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;

Ваша таблица теперь сохраняется, и когда вы создаете новый экземпляр улья, вы можете повторно импортировать данные

Ваша таблица может храниться в нескольких различных форматах в зависимости от того, где вы хотите ее использовать.

18 голосов
/ 27 марта 2012

Выше Query необходимо использовать ключевое слово EXTERNAL, то есть:

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 голосов
/ 05 ноября 2015

Если бы вы могли получить доступ к консоли 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;
...