2012-02-28 25 views
18

Utworzyłem Hive stolik poprzez interaktywną sesję Elastic MapReduce i zaludnionych go z pliku CSV tak:eksportowanie Hive Tabela do wiadra 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; 

Teraz chcę, aby zapisać tabelę Hive w sposób S3 bucket, więc tabela zostanie zachowana po zakończeniu instancji MapReduce.

Czy ktoś wie, jak to zrobić?

Odpowiedz

20

Tak trzeba eksportować i importować dane na początku i na końcu sesji ula

W tym celu należy utworzyć tabelę, która jest odwzorowany na S3 wiadra i katalogu zrobić

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/'; 

wstawić dane do tabeli s3 i kiedy wkładka jest kompletny katalog będzie mieć plik csv

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

Twój stół jest teraz zachowane i podczas tworzenia nowej instancji ula ty można ponownie zaimportować dane

Twoja tabela może być przechowywana w kilku różnych formatach w zależności od tego, gdzie chcesz jej użyć.

17

Powyższe zapytanie musi użyć słowa kluczowego zewnętrzne, tj:

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; 

Inną alternatywą jest użycie kwerendy

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

tabela jest przechowywana w katalogu S3 z domyślnymi HIVE ograniczników.

+0

To nie kopiuje nagłówka. czy istnieje również sposób na skopiowanie nagłówka? –

0

Jeśli można uzyskać dostęp do konsoli AWS i mieć „Access Key Id” i „Secret Access Key” na koncie

Można spróbować to zbyt ..

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'; 

Teraz wstawić dane jak inne opisane powyżej.

INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport; 
Powiązane problemy