gpt4 book ai didi

hadoop - 如何在配置单元插入到查询中指定列列表

转载 作者:可可西里 更新时间:2023-11-01 14:16:14 25 4
gpt4 key购买 nike

我刚刚安装并配置了 Apache Hive 版本 1.1.0。然后我通过查询此查询创建了一个表:

create table person (name1 string, surname1 string);

然后我想通过以下方式添加一行:

insert into person (name1, surname1) values ("Alan", "Green");

它会导致错误:

Error: Error while compiling statement: FAILED: ParseException line 1:20 cannot recognize input near '(' 'name1' ',' in statement (state=42000,code=40000).

但是当我在没有列列表的情况下执行查询时,它工作正常:

insert into person values ("Alan", "Green");

问题是:如何在 hiveQL 中指定要插入的列列表?

最佳答案

根据这个错误HIVE-9481 , 自 1.2.0 起,您可以在 INSERT 语句中指定列列表。语法是这样的:

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) 
[(column_list)]
[IF NOT EXISTS]] select_statement1 FROM from_statement;

例子:

CREATE TABLE pageviews (userid VARCHAR(64), link STRING, "from" STRING)
PARTITIONED BY (datestamp STRING)
CLUSTERED BY (userid) INTO 256 BUCKETS STORED AS ORC;

INSERT INTO TABLE pageviews
PARTITION (datestamp = '2014-09-23')
(userid,link)
VALUES ('jsmith', 'mail.com');

我用 Hive 2.1 对此进行了测试。它仅适用于 INSERT INTO,不适用于 INSERT OVERWRITE

而且我不知道为什么 Apache wiki 页面中没有提到这种语法 LanguageManual DML

https://issues.apache.org/jira/browse/HIVE-9481

关于hadoop - 如何在配置单元插入到查询中指定列列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29095543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com