gpt4 book ai didi

hadoop - Hive 1.2.1 更新

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

我有表名'records'和desc:

hive> desc records;
OK
year string
temperature int
quality int

根据 Apache documentation Hive 1.2.1(0.14.0 之后的版本)可以更新

我尝试了更新命令并得到了下面提到的错误:

hive> update records
> set quality=8
> where year='2000';
FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.

我到底缺少什么?是代码还是表不满足任何条件(限制)?

最佳答案

只允许更新 ORC 文件格式。在执行更新或删除之前,您还必须设置一些属性。

客户端

set hive.support.concurrency=true; 
set hive.enforce.bucketing=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;

服务器端(Metastore)

set hive.compactor.initiator.on=true; 
set hive.compactor.worker.threads=1;

设置后创建具有所需属性的表

CREATE TABLE test_result
(run_id VARCHAR(100), chnl_txt_map_key INT)
clustered by (run_id) into 1 buckets
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS orc tblproperties ("transactional"="true" );

现在您可以对该表执行更新或插入操作。如果您希望 DML 操作仅在临时基础上执行,您可以单独在 session 中设置上述所有属性,而不是在 hive-site.xml 文件中设置服务器端属性。

关于hadoop - Hive 1.2.1 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40677208/

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