Hive:使用 select 1 插入带有列的 hive 表

Posted

技术标签:

【中文标题】Hive:使用 select 1 插入带有列的 hive 表【英文标题】:Hive: Insert into hive table with column using select 1 【发布时间】:2015-03-04 06:28:05 【问题描述】:

假设我有一个配置单元表 test_entry,其中列名为 entry_id。

hive> desc test_entry;
OK
entry_id                int
Time taken: 0.4 seconds, Fetched: 1 row(s)

假设我需要使用select 1(返回 1)在上表中插入一行。例如:如下所示的语法:

hive> insert into table test_entry select 1;

但我收到以下错误:

FAILED: NullPointerException null

如此有效,我想为 entry)id 插入一行,使用这样的 select 语句(不引用另一个表),其值为 1。

如何做到这一点?

【问题讨论】:

【参考方案1】:

Hive 不支持您尝试执行的操作。 Hive 0.13 中引入了对基于 ORC 的表的插入。

在此之前,如果您正在执行 INSERT .. SELECT,则必须指定 FROM 子句

一种解决方法可能是创建一个包含一行的外部表并执行以下操作

INSERT .. SELECT 1 FROM table_with_one_row

【讨论】:

这就是我害怕的。我想避免创建外部表。感谢您的回复。

以上是关于Hive:使用 select 1 插入带有列的 hive 表的主要内容,如果未能解决你的问题,请参考以下文章

在 IMPALA/HIVE 中添加带有 SELECT 的新列后,旧表数据变为 NULL

在 hive 中创建带有附加列的表

在 Hive 中选择

在具有标识列的表中插入 select from

如何在带有 select 语句的 where 子句中使用比较运算符?

Hive:无法在具有 100 个或更多分区列的表中插入数据错误:在最大长度为 767 的列“PART_NAME”中