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?
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.
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:
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;