【问题标题】:HIVE Query returning null values after import data from local stored file从本地存储文件导入数据后,HIVE 查询返回空值
【发布时间】:2013-01-30 15:26:02
【问题描述】:

我是 Hive 新手,所以如果我的问题是菜鸟,请保持温和 :-)

我使用以下 hive 语句来创建数据并将其加载到表中。

CREATE TABLE entities_extract (doc_id STRING, name STRING, type STRING, len STRING, offset    STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/research/45924/hive/entities_extract';

LOAD DATA LOCAL INPATH '/home/researcher/hadoop-runnables/files/entitie_extract_by_doc.txt' OVERWRITE INTO TABLE entities_extract;

到目前为止一切顺利,执行此脚本时没有错误。奇怪的是,当我在表格上执行 select * from 时,我的结果显示了 4 个额外的空值列

输入的数据如下所示:

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086

从选择返回的数据如下所示:

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086   NULL    NULL    NULL    NULL

编辑: 下面是“entitie_extract_by_doc.txt”的一小部分

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9   385
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Marotolli   PERSON   939420
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Corzatt   PERSON   7   39772
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9  40314
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Corzatt   PERSON   7   40584
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9  40840
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Rich   PERSON   4   41038
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Lea   PERSON   3   41044
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Anthony   PERSON   7   41049
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Bill   PERSON   4   41062
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Nelson   PERSON   6   41067
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Barbara   PERSON   7   41078
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086

我已经查看了我的源数据,看看是否有 4 个额外的选项卡,但事实并非如此..

这里有人知道这 4 个额外的列是从哪里来的吗?

亲切的问候,

马丁

【问题讨论】:

  • 你能提供一个小样本 entitie_extract_by_doc.txt 吗?
  • 提供了 entitie_extract_by_doc.txt 的一小部分。在我看来,在加载 txt 文件期间,整行都被放入 doc_id 中,而不是分成五列。
  • 我让它工作了,似乎 os x 写标签的方式与 Debian 不同..dump!

标签: hadoop import hive


【解决方案1】:

您应该替换任何可能位于同一列中的字符串数据中的任何\n。那些额外的\n 可能会创建额外的列。

select regexp_replace(mensaje,"\n"," ") from partido where id = "1e2af";

【讨论】:

    【解决方案2】:

    这里你没有创建外部表,所以不需要提及位置。从查询中删除位置,然后您会得到正确的值。

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      相关资源
      最近更新 更多