我已经多次询问过这类问题,但这些解决方案对我没有用。我创建了一个外部的hive表,因为我的数据来自map-only job输出。然后,通过load命令给出特定文件的路径。它显示确定。但是当我给select * from table
命令它返回一些空值的列。我执行的每个命令都在错误pic中。
我在文件中的分隔符是||
,所以我在create table命令中也提到了相同的内容。
这是我的输入文件pic file pic。这是error pic。我也试过一个普通的表而不是外部表。这也表现出同样的错误。我也尝试过将分隔符称为//||
以及\|\|
。但都没有效果。
您遇到的问题与作为FIELD分隔符的多个字符有关。
根据文件FIELD定界符应该是CHAR
row_format
: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
[NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later)
您需要将数据更改为仅具有单个字段分隔符。
如果你不能这样做,那么另一种方法是使用具有单个字段的阶段表。将数据加载到该表,然后在实际目标表中,通过||
分隔符拆分阶段表中的列,然后插入。您需要确保数据中的字段计数一致,否则您的最终输出将关闭。