Интеграция Apache Zeppelin с Hive Warehouse Connector в Azure HDInsight

Кластеры Spark HDInsight включают в себя записные книжки Apache Zeppelin с разными интерпретаторами. В этой статье мы сосредоточимся только на интерпретаторе Livy для доступа к таблицам Hive из Spark с помощью хранилища Hive Подключение or.

Примечание.

В этой статье содержатся ссылки на термин, который корпорация Майкрософт больше не использует. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

Необходимые условия

Выполните инструкции из статьи Настройка Hive Warehouse Connector.

Начало работы

  1. С помощью команды ssh command подключитесь к кластеру Apache Spark. Измените следующую команду, заменив CLUSTERNAME именем кластера, а затем введите команду:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. В сеансе SSH выполните следующую команду, чтобы узнать версии hive-warehouse-connector-assembly и pyspark_hwc.

    ls /usr/hdp/current/hive_warehouse_connector
    

    Сохраните выходные данные, которые нам потребуются для настройки Apache Zeppelin.

Настройка Livy

Для доступа к таблицам Hive из Zeppelin с помощью интерпретатора Livy требуются следующие конфигурации.

Кластер Interactive Query

  1. В веб-браузере перейдите по адресу https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs, указав вместо LLAPCLUSTERNAME имя кластера Interactive Query.

  2. Перейдите в раздел Advanced>Custom core-site (Дополнительно > Пользовательский базовый сайт). Щелкните Add Property... (Добавить свойство...), чтобы добавить следующие конфигурации:

    Настройка Значение
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. Сохраните изменения и перезапустите все затронутые компоненты.

Кластер Spark

  1. В веб-браузере перейдите на страницу с адресом https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs, заменив CLUSTERNAME именем кластера Apache Spark.

  2. Разверните Custom livy2-conf. Щелкните Add Property... (Добавить свойство...), чтобы добавить следующие конфигурации.

    Настройка Значение
    livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/
  3. Сохраните изменения и перезапустите все затронутые компоненты.

Настройка интерпретатора Livy в пользовательском интерфейсе Zeppelin (кластер Spark)

  1. В веб-браузере перейдите на страницу с адресом https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter, заменив CLUSTERNAME именем кластера Apache Spark.

  2. Перейдите к livy2.

  3. Добавьте перечисленные ниже конфигурации.

    Настройка Значение
    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.
    Замените VERSION значением, которое вы получили ранее в разделе Начало работы.
    livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip.
    Замените VERSION значением, которое вы получили ранее в разделе Начало работы.
    livy.spark.sql.hive.hiveserver2.jdbc.url Задайте для него URL-адрес HiveServer2 Interactive JDBC для кластера Interactive Query.
    spark.security.credentials.hiveserver2.enabled true
  4. Для кластеров ESP добавьте также следующую конфигурацию.

    Настройка Значение
    livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
    • С помощью команды ssh подключитесь к кластеру Interactive Query. Найдите параметр default_realm в файле /etc/krb5.conf. Замените <AAD-DOMAIN> это значение в виде строки верхнего регистра, в противном случае учетные данные не найдены.

      hive warehouse connector AAD Domain.

  5. Сохраните изменения и перезапустите интерпретатор Livy.

Если интерпретатор Livy недоступен, измените файл shiro.ini, который содержится в компоненте Zeppelin в Ambari. Дополнительные сведения см. в статье Configuring Apache Zeppelin Security (Настройка безопасности в Apache Zeppelin).

Выполнение запросов в Zeppelin

Запустите записную книжку Zeppelin с помощью интерпретатора Livy и выполните следующий код.

%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()

Следующие шаги