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

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

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

Я добавил некоторые изменения в файл hive-site.xml, а также перезапустил куст и cloudera.Это изменения, которые я сделал в Hive-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

Ответ 1

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

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

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

Вы можете следовать этому пример.

Ответ 2

пожалуйста, помогите понять концепцию ведра здесь