我正在尝试创建一个允许更新的表。我看了几个关于如何配置这个的文档。我们使用的是hdp2.2.4.5和hive0.14。
以下是我设置的配置。我在配置单元的命令客户机中运行这些。
hive> set hive.support.concurrency;
hive.support.concurrency=true
hive> set hive.enforce.bucketing;
hive.enforce.bucketing=true
hive> set hive.exec.dynamic.partition.mode;
hive.exec.dynamic.partition.mode=nonstrict
hive> set hive.txn.manager;
hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive> set hive.compactor.initiator.on;
hive.compactor.initiator.on=true
hive> set hive.compactor.worker.threads;
hive.compactor.worker.threads=1
以下是我的表的create语句:
CREATE TABLE bt_xda_zgrp_sch_stg_update_3(
`xda_zgrp_id` int,
`day_of_wk_ind` int,
`max_dlvry_qty` int,
`last_upd_user_id` string,
`last_upd_ts` timestamp)
clustered by (xda_zgrp_id) into 9 buckets
stored as orc TBLPROPERTIES ('transactional'='true');
请让我知道如果你看到任何问题或有任何建议。
提前谢谢,
克雷格
2条答案
按热度按时间r8uurelv1#
从tablecreate命令可以清楚地看出,您正在创建一个带扣的表。
“配置单元更新”不能在带边框的表上执行。
请从官方的hivewiki中找到hive更新的限制
希望这有帮助:)
uz75evzq2#
问题是,在设置txn.manager之前,我运行了一个命令(比如“use db\u name”)。这导致txn.manager被设置为初始化,并且在打开新会话之前无法重置。如果我在做任何事情之前设置这个属性,它就会工作。请在此处找到更详细的答案:
http://hortonworks.com/community/forums/topic/help-with-hive-update/