Activation des propriétés ACID dans Hive

Si vous utilisez le service de mégadonnées version 3.0.9+, Spark et Hive utilisent le même catalogue 'hive' et ACID dans Hive est désactivé par défaut. Pour activer ACID, les configurations suivantes doivent être mises à jour à l'aide de l'interface utilisateur Ambari. Après avoir activé ACID dans Hive, Spark ne peut pas lire/écrire dans les tables gérées par Hive. Par conséquent, assurez-vous de mettre à jour le catalogue dans Spark. Seule la table externe fonctionne correctement à partir de Spark.

  1. Accédez à Apache Ambari.
  2. Dans la barre d'outils latérale, sous Services, sélectionnez Hive.
  3. Configuration.
  4. Sous Site de ruche personnalisé, entrez les informations de configuration suivantes :
    • Recherchez hive.support.concurrency : Activer, puis enregistrez
    • Recherchez hive.txn.manager : Mettez à jour la valeur à org.apache.hadoop.hive.ql.lockmgr.DbTxnManager, puis enregistrez
    • Rechercher hive.enforce.bucketing : Activer
    • Recherchez hive.exec.dynamic.partition.mode : Effectuez une mise à jour vers Nonstricte, puis enregistrez
    • Recherchez hive.compactor.initiator.on : Activer, puis enregistrez
    • Recherchez hive.compactor.worker.threads : Réglez à 5, puis enregistrez
    • Recherchez hive.strict.managed.tables : Mettez à jour à Vrai, puis enregistrez
    • Rechercher hive.create.as.insert.only : Activer, puis enregistrer
    • Recherchez metastore.create.as.acid : Activez, puis enregistrez
  5. Redémarrez tous les services concernés.
    Note

    Si vous créez une table avec TBLPROPERTIES (transactional=true,transactional_properties=insert_only), l'opération d'insertion normale dans la commande de table échoue avec l'erreur suivante dans les journaux hiveserver/hivemetastore.Caused by: MetaException(message:Your client does not appear to support insert-only tables. To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is actually incompatible. You can also specify custom client capabilities via get_table_req API.)

    Pour résoudre :

    1. Dans Ambari, sélectionnez Hive > Configs.
    2. Sous Site de ruche personnalisé, sélectionnez Ajouter. Réglez metastore.client.capability.check=Faux.
    3. Enregistrez-le et redémarrez tous les services concernés.
  6. Redémarrez le service Hive.