تكامل موصل Hive Warehouse مع Apache Zeppelin على Azure HDInsight

تشمل أنظمة مجموعات HDInsight Spark دفاتر Apache Zeppelin مع مترجمين فوريين مختلفين. في هذه المقالة، نركز فقط على مترجم Livy للوصول إلى جداول Hive من Spark باستخدام Hive Warehouse الاتصال or.

إشعار

تحتوي هذه المقالة على مراجع لمصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، بالتالي سنزيله من هذه المقالة.

المتطلب الأساسي

أكمل خطوات إعداد موصل Hive Warehouse.

الشروع في العمل

  1. استخدم الأمر ssh للاتصال بنظام مجموعة 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

التكوينات التالية مطلوبة للوصول إلى جداول الخلية من Zeppelin مع مترجم Livy.

نظام مجموعة استعلام تفاعلي

  1. من مستعرض ويب، انتقل إلى https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HDFS/configs حيث LLAPCLUSTERNAME هو اسم مجموعة الاستعلام التفاعلي.

  2. انتقل إلى موقع مخصص >بذاكرة أساسية. حدد Add Property... لإضافة التكوينات التالية:

    التكوين القيمة‬
    hadoop.proxyuser.livy.groups *
    hadoop.proxyuser.livy.hosts *
  3. احفظ التغييرات وأعد تشغيل جميع المكونات المتأثرة.

نظام مجموعة Spark

  1. من متصفح ويب، انتقل إلى https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configsCLUSTERNAME مكان اسم نظام مجموعة Apache Spark.

  2. توسيع Custom livy2-conf. حدد إضافة خاصية... لإضافة التكوين التالي:

    التكوين القيمة‬
    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 صحيح
    livy.spark.sql.hive.llap صحيح
    livy.spark.yarn.security.credentials.hiveserver2.enabled صحيح
    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 قم بتعيينه إلى عنوان موقع ويب لـHiveServer2 Interactive JDBC من نظام مجموعة Interactive Query.
    spark.security.credentials.hiveserver2.enabled صحيح
  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. للمزيد من المعلومات، راجع تكوين أمان 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()

الخطوات التالية