Integrace Apache Zeppelinu se službou Hive Warehouse Připojení or ve službě Azure HDInsight
Clustery HDInsight Spark zahrnují poznámkové bloky Apache Zeppelin s různými interprety. V tomto článku se zaměříme pouze na interpret Livy pro přístup k tabulkám Hive ze Sparku pomocí Připojení oru Hive Warehouse.
Poznámka:
Tento článek obsahuje odkazy na termín, který už Microsoft nepoužívá. Když se termín odebere ze softwaru, odebereme ho z tohoto článku.
Požadavek
Dokončete kroky nastavení Připojení soustavu Hive Warehouse.
Začínáme
Pomocí příkazu ssh se připojte ke clusteru Apache Spark. Upravte následující příkaz nahrazením clusteru názvem clusteru a zadáním příkazu:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
V relaci ssh spusťte následující příkaz, který si poznamenejte verze pro
hive-warehouse-connector-assembly
apyspark_hwc
:ls /usr/hdp/current/hive_warehouse_connector
Uložte výstup pro pozdější použití při konfiguraci Apache Zeppelinu.
Konfigurace Livy
Pro přístup k tabulkám Hive zeppelinu pomocí interpretu Livy se vyžadují následující konfigurace.
Interaktivní cluster dotazů
Ve webovém prohlížeči přejděte na
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs
místo, kde LLAPCLUSTERNAME je název vašeho clusteru Interactive Query.Přejděte na rozšířený>vlastní web jádra. Vyberte Přidat vlastnost... a přidejte následující konfigurace:
Konfigurace Hodnota hadoop.proxyuser.livy.groups * hadoop.proxyuser.livy.hosts * Uložte změny a restartujte všechny ovlivněné součásti.
Spark Cluster
Ve webovém prohlížeči přejděte do
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs
umístění CLUSTERNAME název vašeho clusteru Apache Spark.Rozbalte vlastní livy2-conf. Vyberte Přidat vlastnost... a přidejte následující konfiguraci:
Konfigurace Hodnota livy.file.local-dir-whitelist /usr/hdp/current/hive_warehouse_connector/ Uložte změny a restartujte všechny ovlivněné součásti.
Konfigurace interpretu Livy v uživatelském rozhraní Zeppelin (cluster Spark)
Ve webovém prohlížeči přejděte do
https://CLUSTERNAME.azurehdinsight.net/zeppelin/#/interpreter
umístění , kdeCLUSTERNAME
je název vašeho clusteru Apache Spark.Přejděte na livy2.
Přidejte následující konfigurace:
Konfigurace Hodnota 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
.
Nahraďte verzi hodnotou, kterou jste získali z části Začínáme, dříve.livy.spark.submit.pyFiles file:///usr/hdp/current/hive_warehouse_connector/pyspark_hwc-VERSION.zip
.
Nahraďte verzi hodnotou, kterou jste získali z části Začínáme, dříve.livy.spark.sql.hive.hiveserver2.jdbc.url Nastavte ji na adresu URL HiveServer2 Interactive JDBC clusteru Interactive Query. spark.security.credentials.hiveserver2.enabled true Pouze pro clustery ESP přidejte následující konfiguraci:
Konfigurace Hodnota livy.spark.sql.hive.hiveserver2.jdbc.url.principal hive/_HOST@<AAD-Domain>
Pomocí příkazu ssh se připojte ke clusteru Interactive Query.
default_realm
Vyhledejte parametr v/etc/krb5.conf
souboru. Nahraďte<AAD-DOMAIN>
touto hodnotou jako řetězec velkými písmeny, jinak nelze najít přihlašovací údaje.
Uložte změny a restartujte interpret Livy.
Pokud interpret Livy není přístupný, upravte shiro.ini
soubor, který se nachází v komponentě Zeppelin v Ambari. Další informace naleznete v tématu Konfigurace zabezpečení Apache Zeppelin.
Spouštění dotazů v Zeppelinu
Spuštění poznámkového bloku Zeppelin pomocí interpretu Livy a spuštěním následujícího příkazu
%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()