web-dev-qa-db-fra.com

Comment charger un fichier texte dans une table Hive stockée sous forme de fichiers de séquence

J'ai une table de ruche stockée en tant que séquencefile.

Je dois charger un fichier texte dans cette table. Comment charger les données dans cette table?

25
cldo

Vous pouvez charger le fichier texte dans une table Hive de fichier texte, puis insérer les données de cette table dans votre fichier séquence.

Commencez avec un fichier délimité par des tabulations:

% cat /tmp/input.txt
a       b
a2      b2

créer un fichier de séquence

Hive> create table test_sq(k string, v string) stored as sequencefile;

essayez de charger; comme prévu, cela échouera:

Hive> load data local inpath '/tmp/input.txt' into table test_sq;

Mais avec cette table:

Hive> create table test_t(k string, v string) row format delimited fields terminated by '\t' stored as textfile;

La charge fonctionne très bien:

Hive> load data local inpath '/tmp/input.txt' into table test_t;
OK
Hive> select * from test_t;
OK
a       b
a2      b2

Chargez maintenant dans la table de séquence à partir de la table de texte:

insert into table test_sq select * from test_t;

Peut également charger/insérer avec écraser pour tout remplacer.

51
libjack

Vous ne pouvez pas créer directement une table stockée en tant que fichier de séquence et y insérer du texte. Vous devez faire ceci:

  1. Créer une table stockée sous forme de texte 
  2. Insérer le fichier texte dans la table de texte
  3. Faites un CTAS pour créer la table stockée dans un fichier de séquence.
  4. Déposez le tableau de texte si vous le souhaitez

Exemple:

CREATE TABLE test_txt(field1 int, field2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

LOAD DATA INPATH '/path/to/file.tsv' INTO TABLE test_txt;

CREATE TABLE test STORED AS SEQUENCEFILE
AS SELECT * FROM test_txt;

DROP TABLE test_txt;
0
Michael Stratton