Интеграция Apache Zeppelin с Hive Warehouse Connector в Azure HDInsight
Кластеры Spark HDInsight включают в себя записные книжки Apache Zeppelin с разными интерпретаторами. В этой статье мы сосредоточимся только на интерпретаторе Livy для доступа к таблицам Hive из Spark с помощью хранилища Hive Подключение or.
Примечание.
В этой статье содержатся ссылки на термин, который корпорация Майкрософт больше не использует. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.
Необходимые условия
Выполните инструкции из статьи Настройка Hive Warehouse Connector.
Начало работы
С помощью команды ssh command подключитесь к кластеру Apache Spark. Измените следующую команду, заменив CLUSTERNAME именем кластера, а затем введите команду:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
В сеансе SSH выполните следующую команду, чтобы узнать версии
hive-warehouse-connector-assembly
иpyspark_hwc
.ls /usr/hdp/current/hive_warehouse_connector
Сохраните выходные данные, которые нам потребуются для настройки Apache Zeppelin.
Настройка Livy
Для доступа к таблицам Hive из Zeppelin с помощью интерпретатора Livy требуются следующие конфигурации.
Кластер Interactive Query
В веб-браузере перейдите по адресу
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
, указав вместо LLAPCLUSTERNAME имя кластера Interactive Query.Перейдите в раздел Advanced>Custom core-site (Дополнительно > Пользовательский базовый сайт). Щелкните Add Property... (Добавить свойство...), чтобы добавить следующие конфигурации:
Настройка Значение hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * Сохраните изменения и перезапустите все затронутые компоненты.
Кластер Spark
В веб-браузере перейдите на страницу с адресом
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
, заменив CLUSTERNAME именем кластера Apache Spark.Разверните Custom livy2-conf. Щелкните Add Property... (Добавить свойство...), чтобы добавить следующие конфигурации.
Настройка Значение livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Сохраните изменения и перезапустите все затронутые компоненты.
Настройка интерпретатора Livy в пользовательском интерфейсе Zeppelin (кластер Spark)
В веб-браузере перейдите на страницу с адресом
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
, заменивCLUSTERNAME
именем кластера Apache Spark.Перейдите к livy2.
Добавьте перечисленные ниже конфигурации.
Настройка Значение 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 Для кластеров ESP добавьте также следующую конфигурацию.
Настройка Значение livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
С помощью команды ssh подключитесь к кластеру Interactive Query. Найдите параметр
default_realm
в файле/etc/krb5.conf
. Замените<AAD-DOMAIN>
это значение в виде строки верхнего регистра, в противном случае учетные данные не найдены.
Сохраните изменения и перезапустите интерпретатор 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()
Следующие шаги
- Операции HWC и Apache Spark
- Интеграция Hive Warehouse Connector с Apache Spark и Apache Hive
- Use Interactive Query with HDInsight (Использование Interactive Query в HDInsight)