hadoop - hive 中的 Select 语句返回一些具有空值的列

标签 hadoop hive bigdata nonetype hive-query

我看到很多人问过这种类型的问题,但这些解决方案对我不起作用。我创建了一个外部配置单元表,因为我的数据来自仅限 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)

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

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

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

关于hadoop - hive 中的 Select 语句返回一些具有空值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47967123/

相关文章:

java - 本地程序如何访问hdfs目录?

hadoop - 可以同时运行多少个reducer?

amazon-web-services - 从 S3 加载 Redshift(带分区)

python - pytorch中的大数据,帮助调整步骤

sql - 高效的 SQL 表合并和分页

hadoop - 为什么map/reduce输出一个空文件,没有报告异常

hadoop - 删除名称节点后从 HDFS 恢复文件

mysql - SQL 连接两列,第一列有变化

hadoop - 在 Hbase 表之上创建 Hive 表时出错

Vim:如何禁用 CSV.vim 插件?