我将hive表存储为序列文件。
我需要将一个文本文件加载到此表中。如何将数据加载到此表中?
答案 0 :(得分:51)
您可以将文本文件加载到文本文件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;
也可以使用覆盖加载/插入以替换所有。
答案 1 :(得分:0)
您不能直接创建存储为序列文件的表并在其中插入文本。你必须这样做:
示例:
{{1}}
答案 2 :(得分:0)
简单的方法是将表创建为文本文件并将文件移动到适当的位置
创建外部表mytable(col1字符串,col2字符串)
以'|'结尾的行格式分隔字段存储为文本文件;
将文件复制到创建表的HDFS位置。
希望对您有帮助!