シーケンスファイルとして保存されたHiveテーブルがあります。
このテーブルにテキストファイルを読み込む必要があります。このテーブルにデータをロードするにはどうすればよいですか?
テキストファイルをテキストファイルHiveテーブルにロードし、このテーブルのデータをシーケンスファイルに挿入できます。
タブ区切りファイルで開始します。
% cat /tmp/input.txt
a b
a2 b2
シーケンスファイルを作成する
Hive> create table test_sq(k string, v string) stored as sequencefile;
ロードしようとする;予想どおり、これは失敗します:
Hive> load data local inpath '/tmp/input.txt' into table test_sq;
しかし、この表では:
Hive> create table test_t(k string, v string) row format delimited fields terminated by '\t' stored as textfile;
ロードはうまく機能します:
Hive> load data local inpath '/tmp/input.txt' into table test_t;
OK
Hive> select * from test_t;
OK
a b
a2 b2
テキストテーブルからシーケンステーブルにロードします。
insert into table test_sq select * from test_t;
また、すべてを置き換えるためにoverwriteでロード/挿入を実行できます。
シーケンスファイルとして保存されたテーブルを直接作成し、テキストを挿入することはできません。これを行う必要があります。
例:
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;