如何将文本文件加载到存储为序列文件蜂房表(How to load a text file into

2019-08-04 20:48发布

我有存储为sequencefile蜂房表。

我需要一个文本文件加载到这个表。 如何将数据加载到这个表?

Answer 1:

您可以将文本文件加载到一个文本文件蜂房表,然后从该表中的数据插入到你的sequencefile。

开始一个制表符分隔的文件:

% 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;

还可以做负载覆盖 /插入全部更换。



Answer 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;


文章来源: How to load a text file into a Hive table stored as sequence files
标签: hadoop hive