【发布时间】:2013-05-09 10:37:01
【问题描述】:
我正在加载的文件由“”(空格)分隔。下面是文件。该文件位于 HDFS 中:-
001 000
001 000
002 001
003 002
004 003
005 004
006 005
007 006
008 007
099 007
1> 我正在创建一个外部表并通过发出以下命令加载文件:-
CREATE EXTERNAL TABLE IF NOT EXISTS graph_edges (src_node_id STRING COMMENT 'Node ID of Source node', dest_node_id STRING COMMENT 'Node ID of Destination node') ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/user/hadoop/input';
2> 在此之后,我只是通过发出以下命令将表插入到另一个文件中:-
INSERT OVERWRITE DIRECTORY '/user/hadoop/output' SELECT * FROM graph_edges;
3> 现在,当我对文件进行分类时,字段不会被任何分隔符分隔:-
hadoop dfs -cat /user/hadoop/output/000000_0
输出:-
001000
001000
002001
003002
004003
005004
006005
007006
008007
099007
有人可以帮帮我吗?为什么要删除分隔符以及如何分隔输出文件?
在 CREATE TABLE 命令中,我尝试了DELIMITED BY '\t',但随后我得到了不必要的 NULL 列。
非常感谢任何指针的帮助。我正在使用 Hive 0.9.0 版本。
【问题讨论】:
-
你确定输出目录中没有分隔符吗?默认情况下,Hive 使用 '\1' 作为字段分隔符,因此您应该尝试 `hadoop dfs -cat "/user/hadoop/output/*" | tr '\001' ' '
-
一定要从@garren 看到答案——当前版本的Hive 允许
INSERT OVERWRITE DIRECTORY...ROW FORMAT和INSERT OVERWRITE DIRECTORY...STORED AS