如何将文本文件加载到存储为序列文件的Hive表中

时间:2012-12-28 03:24:48

标签: hadoop hive

我将hive表存储为序列文件。

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

3 个答案:

答案 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. 将文本文件插入文本表
  3. 执行CTAS以创建存储为序列文件的表。
  4. 根据需要删除文本表
  5. 示例:

    {{1}}

答案 2 :(得分:0)

简单的方法是将表创建为文本文件并将文件移动到适当的位置

创建外部表mytable(col1字符串,col2字符串)
以'|'结尾的行格式分隔字段存储为文本文件;

将文件复制到创建表的HDFS位置。
希望对您有帮助!