【问题标题】:How I avoid the "NULL" in the first "Field Name" of Hive table我如何避免 Hive 表的第一个“字段名称”中的“NULL”
【发布时间】:2017-04-26 10:23:58
【问题描述】:

首先,我使用以下命令在 Hive 中创建了表“emp”:

create table emp (id INT, name STRING, address STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

然后通过以下命令加载此“emp”表中的数据: LOAD DATA LOCAL INPATH '\home\cloudera\Desktop\emp.txt' 覆盖到表emp中;

当我从“emp”表中选择数据时:它显示表 Null 的第一个字段 像这样:

【问题讨论】:

  • 能分享一下emp.txt文件吗?
  • 它是一个制表符分隔文件。 “id” “Name” “Address” 这些是字段。它显示“ID”字段NULL
  • 您是否在您的文件中的数据中添加“”?
  • 不,我没有在我的文件中使用“”。只需输入“列”名称和那些“列”的数据
  • 附言。请用文字替换图片(用ctrl+k格式化)

标签: hadoop hive bigdata


【解决方案1】:

您的文件中有一个标题行,第一个值id 无法转换为INT,因此被NULL 替换。

tblproperties ("skip.header.line.count"="1") 添加到您的表定义中

对于现有表 -

alter table emp set tblproperties ("skip.header.line.count"="1");

【讨论】:

  • 我是否需要为此命令再次创建表“emp”或以任何其他方式添加它??
  • alter table empset tblproperties ("skip.header.line.count"="1");我一直在使用上面的命令它给了我一个错误:“无法识别'tblproperties'附近的输入”
  • 错字。再次检查
  • 当我写这个命令时 select * from emp;它没有显示列名?
  • set hive.cli.print.header=true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
相关资源
最近更新 更多