ما هي Apache Hive وHiveQL على Azure HDInsight؟

Apache Hive هو نظام مستودع بيانات لـ Apache Hadoop. تمكن Apache Hive من تلخيص البيانات والاستعلام عنها وتحليلها. تتم كتابة استعلامات Hive بلغة HiveQL، وهي لغة استعلام مشابهة لـ SQL.

يسمح لك Apache Hive بإسقاط الهيكل على بيانات غير منظمة إلى حد كبير. بعد تحديد البنية، يمكنك استخدام HiveQL للاستعلام عن البيانات دون معرفة Java أو MapReduce.

يوفر HDInsight العديد من أنواع المجموعات، والتي يتم ضبطها لأحمال عمل محددة. تُستخدم أنواع المجموعات التالية غالباً لاستعلامات Apache Hive:

نوع شبكة نظام المجموعة ‏‏الوصف
استعلام تفاعلي مجموعة Hadoop توفر وظائف معالجة تحليلية بزمن استجابة بطيء (LLAP) لتحسين أوقات الاستجابة للاستعلامات التفاعلية. لمزيد من المعلومات، راجع مستند البدء بالاستعلام التفاعلي في HDInsight.
Hadoop مجموعة Hadoop تم ضبطها لأحمال عمل معالجة الدُفعات. لمزيد من المعلومات، راجع مستند البدء بـ Apache Hadoop في HDInsight.
Spark يحتوي Apache Spark على وظائف مدمجة للعمل مع Apache Hive. لمزيد من المعلومات، راجع مستند البدء بـ Apache Spark على HDInsight.
HBase يمكن استخدام HiveQL للاستعلام عن البيانات المخزنة في Apache HBase. لمزيد من المعلومات، راجع مستند البدء بـ Apache HBase على HDInsight.

كيفية استخدام Apache Hive

استخدم الجدول التالي لاكتشاف الطرق المختلفة لاستخدام Hive مع HDInsight:

استخدم هذه الطريقة إذا كنت تريد... ... استعلامات تفاعلية ... معالجة دفعية ...من هذا نظام تشغيل العميل
أدوات HDInsight لـ Visual Studio Code Linux أو Unix أو macOS X أو Windows
أدوات HDInsight لبرنامج Visual Studio Windows
عرض Apache Hive أي (قائم على المتصفح)
عميل الخط المباشر Linux أو Unix أو macOS X أو Windows
واجهة برمجة التطبيقات REST   Linux أو Unix أو macOS X أو Windows
Windows PowerShell   Windows

مرجع لغة HiveQL

يتوفر مرجع لغة HiveQL بلغة الدليل.

Apache Hive وهيكل البيانات

يفهم Hive كيفية التعامل مع البيانات المهيكلة وشبه المنظمة. على سبيل المثال، الملفات النصية حيث يتم تحديد الحقول بأحرف معينة. يُنشئ بيان HiveQL التالي جدولاً فوق البيانات المحددة بمسافة:

CREATE EXTERNAL TABLE log4jLogs (
    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/';

يدعم Hive أيضاً جهاز التسلسل/أجهزة إزالة التسلسل (SerDe) المخصصة للبيانات المعقدة أو المنظمة بشكل غير منتظم. لمزيد من المعلومات، راجع مستند كيفية استخدام JSON SerDe مخصص مع HDInsight.

لمزيد من المعلومات حول تنسيقات الملفات التي تدعمها Hive، راجع دليل اللغة (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)

جداول Apache Hive الداخلية مقابل الجداول الخارجية

يوجد نوعان من الجداول التي يمكنك إنشاؤها باستخدام Apache Hive:

  • الداخلي: يتم تخزين البيانات في مستودع بيانات Apache Hive. يقع مستودع البيانات في /hive/warehouse/ على التخزين الافتراضي للمجموعة.

    استخدم الجداول الداخلية عند تطبيق أحد الشروط التالية:

    • البيانات مؤقتة.
    • تريد Apache Hive لإدارة دورة حياة الجدول والبيانات.
  • External: يتم تخزين البيانات خارج مستودع البيانات. يمكن تخزين البيانات على أي تخزين يمكن الوصول إليه من قِبل الكتلة.

    استخدم الجداول الخارجية عند تطبيق أحد الشروط التالية:

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

لمزيد من المعلومات، راجع مقالة المدونة مقدمة إلى جداول Hive الداخلية والخارجية.

وظائف معرفة من قِبل المستخدم (UDF)

يمكن أيضاً تمديد Hive من خلال الوظائف المعرفة من قِلا المستخدم (UDF). يتيح لك UDF تنفيذ وظائف أو منطق لا يمكن تصميمه بسهولة في HiveQL. للحصول على مثال لاستخدام UDFs مع Apache Hive، راجع المستندات التالية:

مثال على البيانات

تأتي Hive الموجودة على HDInsight محملة مسبقاً بجدول داخلي باسم hivesampletable. يوفر HDInsight أيضاً أمثلة لمجموعات البيانات التي يمكن استخدامها مع Hive. يتم تخزين مجموعات البيانات هذه في الدلائل /example/data و/HdiSamples. توجد هذه الدلائل في التخزين الافتراضي لنظام المجموعة الخاص بك.

مثال على استعلام Apache Hive

تعرض عبارات HiveQL التالية أعمدة في ملف /example/data/sample.log:

DROP TABLE log4jLogs;
CREATE EXTERNAL TABLE log4jLogs (
    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;

في المثال السابق، تقوم عبارات HiveQL بتنفيذ الإجراءات التالية:

البيان‬ ‏‏الوصف
DROP TABLE إذا كان الجدول موجوداً بالفعل، فاحذفه.
إنشاء جدول خارجي يقوم بإنشاء جدول external جديد في Hive. تخزن الجداول الخارجية تعريف الجدول فقط في Hive. تُترك البيانات في الموقع الأصلي وفي التنسيق الأصلي.
تنسيق الصف يخبر Apache Hive كيف يتم تنسيق البيانات. في هذه الحالة، يتم فصل الحقول في كل سجل بمسافة.
STORED AS TEXTFILE LOCATION يخبر Apache Hive أين يتم تخزين البيانات (الدليل example/data) وأنه تم تخزينها كنص. يمكن أن تكون البيانات في ملف واحد أو تنتشر عبر ملفات متعددة داخل الدليل.
حدد … تحديد عدد كل الصفوف حيث يحتوي العمود t4 على القيمة [خطأ]. تعرض هذه العبارة قيمة 3 لأن هناك ثلاثة صفوف تحتوي على هذه القيمة.
INPUT__FILE__NAME LIKE '%.log' يحاول Apache Hive تطبيق مخطط قاعدة البيانات على كل الملفات في الدليل. في هذه الحالة، يحتوي الدليل على ملفات لا تتطابق مع المخطط. لمنع البيانات المهملة في النتائج، يخبر هذا البيان Apache Hive أنه يجب علينا فقط إرجاع البيانات من الملفات التي تنتهي بـ .log.

إشعار

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

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

لإنشاء جدول internal بدلاً من جدول خارجي، استخدم HiveQL التالي:

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]';

تؤدي هذه العبارات الإجراءات التالية:

البيان‬ ‏‏الوصف
إنشاء جدول إذا لم يكن موجودًا إذا كان الجدول غير موجود، قم بإنشائه. نظراً لعدم استخدام الكلمة الرئيسية EXTERNAL، تُنشئ هذه العبارة جدولاً داخلياً. يتم تخزين الجدول في مستودع بيانات Apache Hive وتتم إدارته بالكامل بواسطة Hive.
يخزّن كملف تخزين عمودي مُحسن ORC يخزن البيانات بتنسيق محسن عمود الصف (ORC). ORC هو تنسيق محسن للغاية وفعال لتخزين بيانات Apache Hive.
إدراج بيانات جديدة وحذف البيانات القديمة ... اختار تحديد صفوف من log4jLogs الجدول الذي يحتوي على [ERROR]، ثم إدراج البيانات في جدول errorLogs .

إشعار

بخلاف الجداول الخارجية، يؤدي إفلات جدول داخلي أيضاً إلى حذف البيانات الأساسية.

تحسين أداء استعلام Hive

Apache Tez

Apache Tez هو إطار عمل يسمح للتطبيقات كثيفة البيانات، مثل Apache Hive، بالعمل بكفاءة أكبر على نطاق واسع. يتم تمكين Tez بشكل افتراضي. تحتوي Apache Hive على مستندات تصميم Tez على تفاصيل حول خيارات التنفيذ وتكوينات الضبط.

معالجة تحليلية منخفضة الكمون (LLAP)

LLAP (تُعرف أحياناً باسم Live Long and Process) هي ميزة جديدة في Hive 2.0 تسمح بالتخزين المؤقت في الذاكرة للاستعلامات.

يوفر HDInsight LLAP في نوع كتلة الاستعلام التفاعلي. لمزيد من المعلومات، راجع مستند البدء باستعلام تفاعلي .

جدولة استعلامات Apache Hive

هناك عديد من الخدمات التي يمكن استخدامها لتشغيل استعلامات Apache Hive كجزء من سير عمل مجدول أو حسب الطلب.

Azure Data Factory

يسمح لك Azure Data Factory باستخدام HDInsight كجزء من خط أنابيب مصنع البيانات. لمزيد من المعلومات حول استخدام Apache Hive من خط التدفق، راجع مستند تحويل البيانات باستخدام نشاط Hive في Azure Data Factory.

وظائف Apache Hive وخدمات تكامل خادم SQL

يمكنك استخدام SQL Server Integration Services (SSIS) لتشغيل مهمة خلية. توفر حزمة ميزات Azure لـ SSIS المكونات التالية التي تعمل مع وظائف Apache Hive على HDInsight.

لمزيد من المعلومات، راجع وثائق Azure Feature Pack .

Apache Oozie

Apache Oozie هو نظام سير عمل وتنسيق يدير وظائف Hadoop. لمزيد من المعلومات حول استخدام Oozie مع Apache Hive، راجع استخدم Apache Oozie لتحديد سير العمل وتشغيله.

إشعار

Phoenix Storage Handler for Hiveغير مدعوم في HDInsight

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

الآن بعد أن تعلمت ماهية Apache Hive وكيفية استخدامها مع Hadoop في HDInsight، استخدم الروابط التالية لاستكشاف طرق أخرى للعمل مع Azure HDInsight.