2015-12-10 3 views
7

При попытке обновить данные в таблице Hive в Cloudera Quickstart VM, я получаю эту ошибку.Попытка выполнить обновление или удаление с помощью диспетчера транзакций, который не поддерживает эти операции

Ошибка при составлении заявления: FAILED: SemanticException [Error 10294]: Попытка сделать обновление или удалить с помощью менеджера транзакций, который не поддерживает эти операции.

Я добавил некоторые изменения в улей-site.xml файла, а также перезапустить улей и cloudera.These являются изменения, которые я сделал в улей-site.xml

hive.support.concurrency – true 
hive.enforce.bucketing – true 
hive.exec.dynamic.partition.mode – nonstrict 
hive.txn.manager –org.apache.hadoop.hive.ql.lockmgr.DbTxnManager 
hive.compactor.initiator.on – true 
hive.compactor.worker.threads – 1 

ответ

5

Я попытался с конфигурацию, которую вы предоставили в песочнице hortonworks, и я смог выполнить операции ACID на столе, и я полагаю, что она работает и в среде Cloudera. Хотя там некоторые вещи, говоря:

  • убедитесь улей имеет свойства, которые вы дали его (вы можете проверить их в улей CLI с помощью команды SET)
  • таблицу, в которой вы работаете с должна быть bucketed, объявлен ORC и имеет в своих свойствах таблицы транзакцию '=' true '(поддержка hiv поддерживает операции ACID только для формата ORC и транзакционных таблиц). Пример правильной таблицы выглядит так:

    hive>create table testTableNew(id int ,name string) clustered by (id) into 2 buckets stored as orc TBLPROPERTIES('transactional'='true');

Вы можете следить за этой example.