2012-02-28 1 views
18

J'ai créé une table Hive par une session interactive Elastic MapReduce et peuplée à partir d'un fichier CSV comme ceci:Exportation Ruche table à un seau 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; 

Je veux maintenant stocker la table dans une Ruche S3 pour que la table soit conservée une fois que j'ai terminé l'instance de MapReduce.

Est-ce que quelqu'un sait comment faire cela?

Répondre

20

Oui, vous devez exporter et importer vos données au début et à la fin de votre session ruche

Pour ce faire, vous devez créer une table qui est mappé sur seau S3 et le répertoire

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

insérer des données dans la table s3 et lorsque l'insert est terminé, le répertoire aura un fichier csv

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

Votre table est maintenant préservée et lorsque vous créez une nouvelle instance ruche vous pouvez réimporter vos données

Votre tableau peut être stocké dans différents formats selon l'endroit où vous voulez l'utiliser.

17

Au-dessus de la requête doit utiliser mot-clé EXTERNE, i.e.:

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; 

Une autre alternative est d'utiliser la requête

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

la table est stockée dans le répertoire S3 avec délimiteurs par défaut HIVE.

+0

Ceci ne copie pas l'en-tête. est-il un moyen de copier l'en-tête aussi? –

0

Si vous pouvez accéder à la console SSFE et ont la « Access Key Id » et « Secret Access Key » pour votre compte

Vous pouvez essayer cela aussi ..

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

Insérez maintenant les données que d'autres mentionnées plus haut.

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