web-dev-qa-db-fra.com

Tentative de mise à jour ou de suppression à l'aide du gestionnaire de transactions qui ne prend pas en charge ces opérations

Lors de la tentative de mise à jour des données de la table Hive dans la machine virtuelle Cloudera Quickstart, je reçois cette erreur.

Erreur lors de la compilation de l'instruction: FAILED: SemanticException [Erreur 10294]: Tentative de mise à jour ou de suppression à l'aide du gestionnaire de transactions qui ne prend pas en charge ces opérations.

J'ai ajouté quelques modifications dans le fichier Hive-site.xml et j'ai également redémarré Hive et cloudera. Ce sont des modifications que j'ai apportées dans 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
14
Vivek Harry

J'ai essayé avec la configuration que vous avez fournie dans un sandbox hortonworks et j'ai pu faire des opérations ACID sur une table et je suppose que cela fonctionne également dans l'environnement Cloudera. Bien qu'il y ait certaines choses à mentionner:

  • assurez-vous que Hive a les propriétés que vous lui avez données (vous pouvez les vérifier dans Hive CLI en utilisant la commande SET)
  • la table avec laquelle vous travaillez doit être compartimentée, déclarée au format ORC et possède dans ses propriétés de table 'transactional' = 'true' (Hive prend en charge les opérations ACID uniquement pour le format ORC et les tables transactionnelles). Un exemple de table appropriée est comme ceci:

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

Vous pouvez suivre ceci exemple .

10
dumitru