Ich habe eine Hive-Tabelle als Sequenzdatei gespeichert.
Ich muss eine Textdatei in diese Tabelle laden. Wie lade ich die Daten in diese Tabelle?
Sie können die Textdatei in eine Textdatei-Hive-Tabelle laden und dann die Daten aus dieser Tabelle in Ihre Sequenzdatei einfügen.
Beginnen Sie mit einer tabulatorgetrennten Datei:
% cat /tmp/input.txt
a b
a2 b2
erstellen Sie eine Sequenzdatei
Hive> create table test_sq(k string, v string) stored as sequencefile;
versuche zu laden; Wie erwartet, wird dies fehlschlagen:
Hive> load data local inpath '/tmp/input.txt' into table test_sq;
Aber mit dieser Tabelle:
Hive> create table test_t(k string, v string) row format delimited fields terminated by '\t' stored as textfile;
Die Ladung funktioniert gut:
Hive> load data local inpath '/tmp/input.txt' into table test_t;
OK
Hive> select * from test_t;
OK
a b
a2 b2
Laden Sie nun aus der Texttabelle in die Sequenztabelle:
insert into table test_sq select * from test_t;
Kann auch mit overwrite laden/einfügen, um alle zu ersetzen.
Sie können eine als Sequenzdatei gespeicherte Tabelle nicht direkt erstellen und Text einfügen. Du musst das tun:
Beispiel:
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;