シーケンスファイルとして保存されたハイブテーブルがあります。
このテーブルにテキスト ファイルを読み込む必要があります。このテーブルにデータをロードするにはどうすればよいですか?
テキスト ファイルをテキスト ファイル 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;
上書きでロード/挿入を実行して、すべてを置き換えることもできます。
シーケンス ファイルとして格納されたテーブルを直接作成して、テキストを挿入することはできません。これを行う必要があります:
例:
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;