تشغيل استعلامات Apache Hive باستخدام أدوات مستودع البيانات لبرنامج Visual Studio

تعرف على كيفية استخدام أدوات مستودع البيانات لـ Visual Studio للاستعلام عن Apache Hive. تسمح لك أدوات مستودع البيانات بإنشاء استعلامات Apache Hive ومراقبتها وإرسالها بسهولة إلى Apache Hadoop على Azure HDInsight.

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

تشغيل استعلامات Apache Hive باستخدام Visual Studio

لديك خياران لإنشاء استعلامات Apache Hive وتشغيلها:

  • إنشاء استعلامات مخصصة.
  • إنشاء تطبيق Apache Hive.

إنشاء استعلام Apache Hive مخصص

يمكن تنفيذ الاستعلامات المخصصة إما في وضع دُفعة أو تفاعلي.

  1. قم بتشغيل Visual Studio وحدد Continue without code.

  2. من Server Explorer، انقر بزر الماوس الأيمن فوق Azure، وحدد الاتصال باشتراك Microsoft Azure...، وأكمل عملية تسجيل الدخول.

  3. قم بفتح HDInsight، وانقر بزر الماوس الأيمن فوق نظام المجموعة حيث تريد تشغيل الاستعلام، ثم حدد كتابة استعلام Apache Hive.

  4. أدخل استعلام الخلية التالي:

    SELECT * FROM hivesampletable;
    
  5. حدد التنفيذ. يعين وضع التنفيذ افتراضياً إلى تفاعلي.

    تنفيذ استعلام Apache Hive التفاعلي، Visual Studio.

  6. لتشغيل الاستعلام نفسه في وضع دُفعة، قم بتبديل القائمة المنسدلة من تفاعلي إلى دُفعة. يتغير زر التنفيذ من تنفيذ إلى إرسال.

    إرسال استعلام Apache Hive الدفعي، Visual Studio.

    محرر Hive يدعم IntelliSense. تدعم أدوات مستودع البيانات لـ Visual Studio تحميل بيانات التعريف عن بُعد عندما تقوم بتحرير برنامج Apache Hive النصي الخاص بك. على سبيل المثال، إذا كتبت SELECT * FROM، فسوف يسرد IntelliSense جميع أسماء الجداول المقترحة. عند تحديد اسم جدول، يسرد IntelliSense أسماء الأعمدة. تدعم الأدوات معظم عبارات Hive DML والاستعلامات الفرعية وUDFs المضمنة. يقترح IntelliSense بيانات تعريف الكتلة المحددة في شريط أدوات HDInsight فقط.

  7. في شريط أدوات الاستعلام (المنطقة أسفل علامة تبويب الاستعلام وفوق نص الاستعلام)، حدد إرسال، أو حدد السهم المنسدل بجوار إرسال واختر متقدم من القائمة المنسدلة. إذا قمت بتحديد الخيار الأخير،

  8. إذا قمت بتحديد خيار الإرسال المتقدم، قم بتكوين اسم المهمة، والوسيطات، وتكوينات إضافية، ودليل الحالة في إرسال مربع حوار البرنامج النصي. ثم حدد إرسال.

    مربع الحوار إرسال البرنامج النصي، استعلام HDInsight Hadoop Hive.

إنشاء تطبيق Apache Hive

لتشغيل استعلام Apache Hive عن طريق إنشاء تطبيق Apache Hive، اتبع الخطوات التالية:

  1. افتح Visual Studio.

  2. من نافذة Start، اختر Create a new project.

  3. في نافذة إنشاء مشروع جديد، في مربع البحث عن قوالب، أدخل Apache Hive. ثم اختر تطبيق Apache Hive وحدد التالي.

  4. في نافذة تكوين مشروع جديد، أدخل اسم المشروع، وحدد أو أنشئ الموقع للمشروع الجديد، ثم حدد إنشاء.

  5. افتح ملف Script.hql الذي تم إنشاؤه مع هذا المشروع ثم الصق بداخله عبارات HiveQL التالية:

    set hive.execution.engine=tez;
    DROP TABLE log4jLogs;
    CREATE EXTERNAL TABLE log4j Logs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE LOCATION '/example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND  INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
    

    تقوم العبارات بالإجراءات الآتية:

    • DROP TABLE: حذف الجدول إذا كان موجوداً.

    • CREATE EXTERNAL TABLE: إنشاء جدول "خارجي" جديد في Apache Hive. تخزن الجداول الخارجية تعريف الجدول فقط في Hive. (يتم ترك البيانات في الموقع الأصلي.)

      إشعار

      يجب استخدام الجداول الخارجية عندما تتوقع إجراء تحديث للبيانات الأساسية بواسطة مصدر خارجي، مثل مهمة MapReduce أو خدمة Azure.

      إسقاط جدول خارجي لا يؤدي إلى حذف البيانات، فقط يُحذف تعريف الجدول.

    • ROW FORMAT: يخبر Apache Hive طريقة تنسيق البيانات. في هذه الحالة، يتم فصل الحقول في كل سجل بمسافة.

    • STORED AS TEXTFILE LOCATION: يخبر Apache Hive أن البيانات مخزنة في دليل example/data وأنه يتم تخزينها كنص.

    • SELECT: تحديد عدد من جميع الصفوف حيث يحتوي العمود t4 على القيمة [ERROR]. تعرض هذه العبارة قيمة 3، لأن هناك ثلاثة صفوف تحتوي على هذه القيمة.

    • INPUT__FILE__NAME LIKE '%.log'يخبر Apache Hive بإرجاع البيانات من الملفات التي تنتهي في .log فقط. تقيد هذه الجملة البحث إلى الملف sample.log الذي يحتوي على البيانات.

  6. من شريط أدوات ملف الاستعلام (الذي له مظهر مشابه لشريط أدوات الاستعلام المخصص)، حدد نظام مجموعة HDInsight الذي تريد استخدامه لهذا الاستعلام. ثم قم بتغيير تفاعلي إلى دُفعة (إذا لزم الأمر) وحدد إرسال لتشغيل العبارات كمهمة Apache Hive.

    يظهر ملخص مهمة Apache Hive ويعرض معلومات حول المهمة التي يتم تشغيلها. استخدم الارتباط تحديث لتحديث معلومات المهمة، حتى تتغير حالة المهمة إلى مكتملة.

    ملخص مهمة Hive المكتمل، تطبيق Hive، Visual Studio.

  7. حدد إخراج المهمة لعرض إخراج هذه المهمة. يعرض [ERROR] 3، وهي القيمة التي تم إرجاعها بواسطة هذا الاستعلام.

مثال إضافي

يعتمد المثال التالي على الجدول log4jLogs الذي تم إنشاؤه في الإجراء السابق، إنشاء تطبيق Apache Hive.

  1. من مستكشف الخادم، انقر بزر الماوس الأيمن فوق نظام المجموعة وحدد كتابة استعلام Apache Hive.

  2. أدخل استعلام الخلية التالي:

    set hive.execution.engine=tez;
    CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC;
    INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
    

    تقوم العبارات بالإجراءات الآتية:

    • CREATE TABLE IF NOT EXISTS: إنشاء جدول إذا لم يكن موجودا مسبقاً. نظراً لعدم استخدام الكلمة الرئيسية EXTERNAL، تُنشئ هذه العبارة جدولاً داخلياً. يتم تخزين الجداول الداخلية في مستودع بيانات Apache Hive ويتم إدارتها بواسطة Apache Hive.

      إشعار

      بخلاف EXTERNAL من الجداول، يؤدي قطع جدول داخلي أيضاً إلى حذف البيانات الأساسية.

    • STORED AS ORC: تخزين البيانات بتنسيق optimized row columnar (ORC). ORC هو تنسيق محسن للغاية وفعال لتخزين بيانات Apache Hive.

    • INSERT OVERWRITE ... SELECT: تحديد صفوف من الجدول log4jLogs الذي يحتوي على [ERROR]، ثم إدراج البيانات في الجدول errorLogs.

  3. قم بتغيير تفاعلي إلى دُفعة إذا لزم الأمر، ثم حدد إرسال.

  4. للتحقق من أن المهمة أنشأت الجدول، انتقل إلى مستكشف الخادم وتوسيع Azure>HDInsight. قم بتوسيع نظام مجموعة HDInsight، ثم قم بتوسيع قواعد بيانات Apache Hive>افتراضي. يتم سرد جدول errorLogs وجدول Log4jLogs .

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

كما تعلم، توفر أدوات HDInsight لـ Visual Studio طريقة سهلة للعمل مع استعلامات Apache Hive على HDInsight.