Экспорт таблицы улья в ведро S3
Я создал таблицу 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.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Да, вы должны экспортировать и импортировать свои данные в начале и в конце сеанса улья.
Для этого вам нужно создать таблицу, которая отображается в ведро и каталог 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;
Ваша таблица теперь сохранена, и когда вы создаете новый экземпляр куста, вы можете reimport ваши данные
Ваша таблица может храниться в нескольких разных форматах в зависимости от того, где вы хотите ее использовать.
Ответ 2
Над 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.
Ответ 3
Если вы можете получить доступ к консоли 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;