Question

J'ai créé une table de ruche via une session interactive MapReduce élastique et l'ai remplie à partir d'un fichier CSV comme ceci:

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 Hive dans un seau S3 afin que la table soit conservée une fois que j'ai terminé l'instance MapReduce.

Est-ce que quelqu'un sait comment faire ça?

Était-ce utile?

La solution

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

Pour ce faire, vous devez créer une table mappée sur le 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 désormais conservée et lorsque vous créez une nouvelle instance de ruche, vous pouvez réimporter vos données

Votre table peut être stockée dans quelques formats différents selon l'endroit où vous souhaitez l'utiliser.

Autres conseils

La requête ci-dessus doit utiliser un mot-clé externe, c'est-à-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;

Une autre alternative consiste à utiliser la requête

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

Le tableau est stocké dans le répertoire S3 avec des délimiteurs par défaut Hive.

Si vous pouviez accéder à la console AWS et avoir le "Access Key Id" et "Secret Access Key"Pour votre compte

Vous pouvez essayer 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 comme les autres indiqués ci-dessus.

INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top