如何将mapreduce结果加载到hive中?

s3fp2yjn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(362)

我有一个目录,在其中存储mapreduce结果,格式如下:“(integer1,integer2,integer3)”,我想将该数据加载到apachehive中。
首先,我创建如下表:
创建表测试(field1 int、field2 int、field3 int);
后来我尝试这样加载数据:
将路径'/user/myuser/output/test'中的数据加载到表test中;
路径正常,表中加载了几行,但都是空的(3个字段为空)。
我怎么能修好它?

h7appiyu

h7appiyu1#

容易修复。在mr程序中按以下格式写入数据

integer1,integer2,integer3

然后创建您的表,如

CREATE TABLE mytable
(
a INT,
b INT,
c INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

如果因为某种原因你不能改变你的mr程序。。您可以使用配置单元删除括号,并从原始输出中创建一个新文件,以遵循表所需的格式(上面列出的格式)

brqmpdu1

brqmpdu12#

谢谢哈拉戈斯和克里克,这两个答案对我帮助很大。
我修改了mr程序,现在输出如下:

1 13 15 
1 16 150    
1 23 75 
1 41 13 
1 54 323    
1 81 34 
10 13 364

还修改了表创建:

create table test (
  field1 int,
  field2 int,
  field3 int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY " ";

负载数据保持不变:

load data inpath '/user/myuser/output/test' into table test;

现在我确实从第一列和第二列得到了数据,但没有从第三列得到数据。

相关问题