我看到很多人问过这种类型的问题,但这些解决方案对我不起作用。我创建了一个外部配置单元表,因为我的数据来自仅限 map 的作业输出。然后,通过加载命令我给出了特定文件的路径。它显示正常。但是当我给出 select * from table
命令时,它会返回一些具有空值的列。我执行的每个命令都在错误图片中。
我在文件中的分隔符是||
,所以我在创建表命令中也提到了同样的内容。
这是我的输入文件图片 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)
您需要将数据更改为只有单个字符字段分隔符。
如果您不能这样做,那么另一种方法是使用具有单个字段的阶段表。将数据加载到该表,然后在实际目标表中,用 ||
分隔符拆分阶段表中的列,然后插入。您需要确保字段计数在数据中是一致的,否则您的最终输出将会关闭。
关于hadoop - hive 中的 Select 语句返回一些具有空值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47967123/