30

シーケンスファイルとして保存されたハイブテーブルがあります。

このテーブルにテキスト ファイルを読み込む必要があります。このテーブルにデータをロードするにはどうすればよいですか?

4

3 に答える 3

55

テキスト ファイルをテキスト ファイル 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;

上書きでロード/挿入を実行して、すべてを置き換えることもできます。

于 2012-12-28T23:56:37.683 に答える
2

シーケンス ファイルとして格納されたテーブルを直接作成して、テキストを挿入することはできません。これを行う必要があります:

  1. テキストとして保存されたテーブルを作成する
  2. テキスト ファイルをテキスト テーブルに挿入する
  3. CTAS を実行して、シーケンス ファイルとして格納されたテーブルを作成します。
  4. 必要に応じてテキスト テーブルを削除します

例:

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;
于 2016-05-16T21:15:37.807 に答える