我有一个目录,在其中存储mapreduce结果,格式如下:“(integer1,integer2,integer3)”,我想将该数据加载到apachehive中。首先,我创建如下表:创建表测试(field1 int、field2 int、field3 int);后来我尝试这样加载数据:将路径'/user/myuser/output/test'中的数据加载到表test中;路径正常,表中加载了几行,但都是空的(3个字段为空)。我怎么能修好它?
h7appiyu1#
容易修复。在mr程序中按以下格式写入数据
integer1,integer2,integer3
然后创建您的表,如
CREATE TABLE mytable ( a INT, b INT, c INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
如果因为某种原因你不能改变你的mr程序。。您可以使用配置单元删除括号,并从原始输出中创建一个新文件,以遵循表所需的格式(上面列出的格式)
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;
现在我确实从第一列和第二列得到了数据,但没有从第三列得到数据。
2条答案
按热度按时间h7appiyu1#
容易修复。在mr程序中按以下格式写入数据
然后创建您的表,如
如果因为某种原因你不能改变你的mr程序。。您可以使用配置单元删除括号,并从原始输出中创建一个新文件,以遵循表所需的格式(上面列出的格式)
brqmpdu12#
谢谢哈拉戈斯和克里克,这两个答案对我帮助很大。
我修改了mr程序,现在输出如下:
还修改了表创建:
负载数据保持不变:
现在我确实从第一列和第二列得到了数据,但没有从第三列得到数据。