Intégrer Apache Zeppelin avec Hive Warehouse Connector dans Azure HDInsight

Les clusters HDInsight Spark incluent des blocs-notes Apache Zeppelin avec différents interpréteurs. Dans cet article, nous nous concentrons uniquement sur l'interpréteur Livy permettant d'accéder aux tables Hive depuis Spark à l'aide de Hive Warehouse Connector.

Remarque

Cet article contient des références à un terme qui n’est plus utilisé par Microsoft. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.

Configuration requise

Suivez les étapes de Configuration de Hive Warehouse Connector.

Prise en main

  1. Utilisez une commande ssh pour vous connecter à votre cluster Apache Spark. Modifiez la commande suivante en remplaçant CLUSTERNAME par le nom de votre cluster, puis entrez la commande :

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. À partir de votre session SSH, exécutez la commande suivante afin de noter les versions pour hive-warehouse-connector-assembly et pyspark_hwc :

    ls /usr/hdp/current/hive_warehouse_connector
    

    Enregistrez la sortie en vue d’une utilisation ultérieure lors de la configuration d’Apache Zeppelin.

Configurer Livy

Les configurations suivantes sont requises pour accéder aux tables Hive à partir de Zeppelin avec l’interpréteur Livy.

Cluster Interactive Query

  1. Dans un navigateur w, accédez à https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs, où LLAPCLUSTERNAME est le nom de votre cluster interactive Query.

  2. Accédez à Avancé>Configuration core-site personnalisée. Sélectionnez ajouter une propriété... pour ajouter les configurations suivantes :

    Configuration Valeur
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. Enregistrez les modifications, puis redémarrez tous les composants affectés.

Cluster Spark

  1. Dans un navigateur web, accédez à https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs, où CLUSTERNAME est le nom de votre cluster Apache Spark.

  2. Développez Custom livy2-conf. Sélectionnez Ajouter une propriété... pour ajouter la configuration suivante :

    Configuration Valeur
    livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/
  3. Enregistrez les modifications, puis redémarrez tous les composants affectés.

Configurer l’interpréteur Livy dans l’interface utilisateur Zeppelin (cluster Spark)

  1. Dans un navigateur web, accédez à https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, où CLUSTERNAME est le nom de votre cluster Apache Spark.

  2. Accédez à livy2.

  3. Ajoutez les configurations suivantes :

    Configuration Valeur
    livy.spark.hadoop.hive.llap.daemon.service.hosts @llap0
    livy.spark.security.credentials.hiveserver2.enabled true
    livy.spark.sql.hive.llap true
    livy.spark.yarn.security.credentials.hiveserver2.enabled true
    livy.superusers livy, zeppelin
    livy.spark.jars file:///usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-VERSION.jar.
    Remplacez VERSION par la valeur que vous avez obtenue dans Prise en main.
    livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
    Remplacez VERSION par la valeur que vous avez obtenue dans Prise en main.
    livy.spark.sql.hive.hiveserver2.jdbc.url Définissez l’URL JDBC interactive HiveServer2 du cluster interactive Query.
    spark.security.credentials.hiveserver2.enabled true
  4. Pour les clusters ESP uniquement, ajoutez la configuration suivante :

    Configuration Valeur
    livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
    • Utilisez la commande ssh pour vous connecter à votre cluster Interactive Query. Recherchez le paramètre default_realm dans le fichier /etc/krb5.conf. Remplacez <AAD-DOMAIN> par cette valeur sous forme de chaîne majuscule, sinon les informations d'identification sont introuvables.

      hive warehouse connector AAD Domain.

  5. Enregistrez les modifications, puis redémarrez l’interpréteur Livy.

Si l’interpréteur livy n’est pas accessible, modifiez le fichier shiro.ini présent dans le composant Zeppelin dans Ambari. Pour plus d’informations, consultez Configuration de la sécurité d’Apache Zeppelin.

Exécution de requêtes dans Zeppelin

Lancez un bloc-notes Zeppelin à l’aide de l’interpréteur Livy, puis exécutez la commande suivante

%livy2

import com.hortonworks.hwc.HiveWarehouseSession
import com.hortonworks.hwc.HiveWarehouseSession._
import org.apache.spark.sql.SaveMode

# Initialize the hive context
val hive = HiveWarehouseSession.session(spark).build()

# Create a database
hive.createDatabase("hwc_db",true)
hive.setDatabase("hwc_db")

# Create a Hive table
hive.createTable("testers").ifNotExists().column("id", "bigint").column("name", "string").create()

val dataDF = Seq( (1, "foo"), (2, "bar"), (8, "john")).toDF("id", "name")

# Validate writes to the table
dataDF.write.format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector").mode("append").option("table", "hwc_db.testers").save()

# Validate reads
hive.executeQuery("select * from testers").show()

Étapes suivantes