Select 配置单元中的语句 return 某些列具有空值

Select statement in hive return some columns with null value

我看到很多人问过这种类型的问题,但这些解决方案对我不起作用。我创建了一个外部配置单元 table,因为我的数据来自仅限地图的作业输出。然后,通过加载命令我给出了特定文件的路径。它显示正常。但是当我给出 select * from table 命令时,它 returns 一些具有空值的列。我执行的每个命令都在错误图片中。

我在文件中的分隔符是 ||,所以我在创建 table 命令中也提到了相同的内容。

这是我的输入文件图片 file pic. And here is the error pic .我也尝试过使用普通 table 而不是外部 table。那也显示了同样的错误。我还尝试将定界符称为 //||\|\|。但是 none 起作用了。

您遇到的问题与作为 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)

您需要将数据更改为只有单个字符字段分隔符。

如果您不能这样做,那么另一种方法是使用具有单个字段的阶段 table。将数据加载到 table,然后在实际目标 table 中,用 || 分隔符拆分阶段 table 中的列,然后插入。您需要确保字段计数在数据中是一致的,否则您的最终输出将关闭。

参考: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableCreate/Drop/TruncateTable