【问题标题】:Showing NULL values after adding column in hive在配置单元中添加列后显示 NULL 值
【发布时间】:2016-02-23 05:52:42
【问题描述】:

我使用的是 hive 版本 1.2.1。我是蜂巢的新手。
我在 TABLE_2 中添加了一列并显示 NULL 值。我想将时间戳列中的日期部分放入新创建的列。我尝试了以下查询:

ALTER TABLE table_2 ADD COLUMNS(DATE_COL string);
INSERT INTO table_2 (DATE_COL) AS SELECT SUBSTRING(TIMESTAMP_COL,-19,10) FROM table_1 ;

这仍然有效,但它仍然在新创建的 DATE_COL 中显示 NULL 值。 我只想在 DATE_COL 中约会。

table_1 有 13 列,table_2 有 14 列 (13 + DATE_COL)。

TIMESTAMP_COL :- 字符串。

DATE_COL - 字符串。

请告诉我如何解决这个问题。

【问题讨论】:

  • 您是否正确使用了 substring(string|binary A, int start, int len) 函数?是什么让您使用起始索引 -19。您可以在 table_1 的 TIMESTAMP 列中分享示例记录吗?
  • @SachinGaikwad 我认为 sustring() 从最后一个值开始计数。 19 是总长度。因此,如果我说-19,则意味着它将从第一个开始。这就是我正在做的事情。如果您知道这背后的实际技术原因,请分享。
  • 我建议首先使用具有相同功能的 select 子句运行此查询,并根据您的需要检查值是否为真,然后进行更新或插入。

标签: hadoop hive


【解决方案1】:

使用更新命令: 语法:

UPDATE 表名 SET column = value [, column = value ...] [WHERE 表达式]

Hive 版本 0.14.0:INSERT...VALUES、UPDATE 和 DELETE 现在提供完整的 ACID 支持。

【讨论】:

  • 谢谢。我已经在网上检查了有关 hive 的此事务属性的信息。我也完成了教程,添加了具有有效参数设置的 hive-site.xml 文件。即使它不起作用。
  • 如果您使用高于 .14 的配置单元版本,请更新您的查询的工作。
  • 我解决了看起来的问题。创建了外部表 T_1,分区为(date_col)。之后,插入 T_1 分区(date_col) select substring(timestamp_col,-19,10) from table_1;这样做可以吗?请建议..!!
猜你喜欢
  • 2020-07-31
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多