2012-02-28 6 views
18

Ho creato una tabella alveare attraverso una sessione interattiva Elastic MapReduce e popolato da un file CSV come questo:Esportazione Hive tabella a un secchio 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; 

Ora voglio per memorizzare la tabella di Hive in un Secchio S3 in modo che la tabella venga conservata una volta terminata l'istanza MapReduce.

Qualcuno sa come fare?

risposta

20

Sì, bisogna esportare e importare i dati all'inizio e alla fine della sessione alveare

Per fare questo è necessario creare una tabella che viene mappato su S3 secchio e directory

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

inserire i dati nella tabella S3 e quando l'inserto è completata la directory avrà un file CSV

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

la tabella è ora conservato e quando si crea una nuova istanza alveare si puoi reimportare i tuoi dati

Il tuo tavolo può essere memorizzato in diversi formati a seconda di dove vuoi utilizzarlo.

17

Sopra Query ha la necessità di utilizzare le parole chiave esterno, vale a dire:

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; 

Un un'altra alternativa è quella di utilizzare la query

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

la tabella viene memorizzato nella directory S3 con delimitatori HIVE di default.

+0

Questo non copia l'intestazione. c'è un modo per copiare anche l'intestazione? –

0

Se si potesse accedere alla console di AWS e hanno il "Access Key Id" e "Secret Access Key" per il tuo account

Si può provare questo troppo ..

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

Ora inserire i dati come altri sopra indicati.

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