我有一个存储为序列文件的配置单元表。
我需要将一个文本文件加载到这个表中。如何将数据加载到此表中?
您可以将文本文件加载到文本文件 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;
简单的方法是将表创建为文本文件并将文件移动到适当的位置
CREATE EXTERNAL TABLE mytable(col1 string, col2 string)
以“|”结尾的行格式分隔字段 存储为文本文件;
将文件复制到创建表的 HDFS 位置。
希望这可以帮助!!!