ما هي لغة استعلام Hive؟ HiveQL Operaالاختصاصات

⚡ ملخص ذكي

توفر لغة استعلام Hive عوامل التشغيل التي تُشغّل كل تعبير HiveQL، والمجموعاتping يتم تصنيفها إلى عائلات علائقية وحسابية ومنطقية وأنواع معقدة وعائلات بناء تغطي معًا المقارنة والحساب والوصول إلى البيانات المتداخلة.

  • 🧮 خمس عائلات من المشغلين: تغطي عوامل التشغيل العلائقية والحسابية والمنطقية والأنواع المعقدة وعوامل البناء كل تعبير يحتاجه استعلام HiveQL.
  • 🔍 تأخذ المقارنة أي نوع بيانات أولي: تقبل عوامل المقارنة جميع الأنواع الأولية، بينما تعمل عوامل LIKE و RLIKE و REGEXP على السلاسل النصية فقط.
  • ➕ تتضمن العمليات الحسابية العمليات الثنائية: بالإضافة إلى العمليات الأساسية الأربع، يعرض HiveQL عمليات modulo و AND و OR و XOR و NOT على أنواع الأرقام.
  • 🧩 للبيانات المتداخلة صيغة خاصة بها: يصل A[n] إلى عنصر مصفوفة ويصل M[key] إلى قيمة خريطة، وكلاهما قابل للاستخدام في أي مكان يُسمح فيه بالتعبير.
  • ؟؟؟؟ ️ تقوم الدوال البانية ببناء قيم معقدة: تقوم الدوال array() و map() و struct() و named_struct() و create_union() بتجميع الأعمدة المعقدة داخل الاستعلام.
  • 📚 تُوسّع الدوال نطاق المعاملات: تتولى الدوال الرياضية، ودوال السلاسل النصية، ودوال التاريخ، والدوال الشرطية، ودوال المجموعات، والدوال التجميعية مهامًا لا يغطيها أي عامل تشغيل.

ما هي عوامل تشغيل لغة استعلام هايف (HiveQL)؟

ما هي لغة استعلام الخلية (HiveQL)؟

لغة استعلام الخلية (HiveQL) هي لغة استعلام في اباتشي خلية يُستخدم لمعالجة وتحليل البيانات المنظمة. يُسهّل على المستخدمين فهم برمجة MapReduce المعقدة. ويعيد استخدام المفاهيم الشائعة من قواعد البيانات العلائقية، مثل الجداول والصفوف والأعمدة والمخطط، لتسهيل عملية التعلم. يوفر Hive واجهة سطر أوامر (CLI) لكتابة استعلامات Hive باستخدام لغة استعلام Hive (HiveQL).

تميل معظم التفاعلات إلى أن تتم عبر واجهة سطر الأوامر (CLI). بشكل عام، بناء جملة HiveQL مشابه لـ SQL الصيغة التي يعرفها معظم محللي البيانات. تنسيقات الملفات الأربعة المذكورة في وثائق Hive الأصلية هي TEXTFILE وSEQUENCEFILE وORC وRCFILE (ملف سجل عمودي)؛ كما تقرأ الإصدارات الحالية وتكتب Parquet وAvro، ويفترض معظم إرشادات الضبط استخدام تنسيق ORC.

يستخدم Hive قاعدة بيانات Derby مضمنة لتخزين البيانات الوصفية للمستخدم الواحد. أما بالنسبة لعمليات نشر البيانات الوصفية متعددة المستخدمين أو المشتركة، فيستخدم Hive MySQL أو قاعدة بيانات علائقية خارجية أخرى بدلاً من ذلك، لأن ديربي لا يسمح إلا بجلسة واحدة في كل مرة.

HiveQL مدمج Operaالاختصاصات

يوفر Hive عوامل تشغيل مدمجة لعمليات البيانات التي يتم تشغيلها على الجداول الموجودة في مستودع Hive.

تعمل هذه العوامل على المعاملات داخل التعبير وتعيد قيمة وفقًا للمنطق المطبق، سواء كان هذا المنطق مقارنة أو حسابًا أو بحثًا في عمود متداخل.

فيما يلي الأنواع الرئيسية للمشغلين المدمجين في HiveQL:

  • عوامل العلاقات
  • العمليات الحسابية
  • العوامل المنطقية
  • Operaتورس على الأنواع المعقدة
  • مُنشئات النوع المعقد

يتم تغطية كل عائلة في قسمها الخاص أدناه، مع جدول المشغل الكامل لتلك العائلة.

قصصي Operaتورس في هايف كيو إل

نستخدم عوامل المقارنة العلائقية لإجراء مقارنات العلاقات بين معاملين.

  • Operaأدوات مثل يساوي، لا يساوي، أصغر من، وأكبر من.
  • جميع أنواع المعاملات هي أنواع أولية في هذه العوامل، وعوامل مطابقة الأنماط تقبل السلاسل فقط.

تُرجع جميع عوامل المقارنة قيمة منطقية (BOOLEAN)، ولذلك تُبنى عليها عبارات WHERE و JOIN و CASE WHEN. يوضح الجدول التالي تفاصيل عوامل المقارنة واستخداماتها في HiveQL:

مدمج Operaتور الوصف Operand
س = ص صحيح إذا كان التعبير X مكافئًا للتعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
س!= ص صحيح إذا لم يكن التعبير X مكافئًا للتعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
X <ص صحيح إذا كان التعبير X أقل من التعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
X <= ص صحيح إذا كان التعبير X أقل من أو يساوي التعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
س > ص صحيح إذا كانت قيمة التعبير X أكبر من قيمة التعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
X >= Y صحيح إذا كان التعبير X أكبر من أو يساوي التعبير Y. وإلا خطأ. يستغرق جميع الأنواع البدائية
X فارغة صحيح إذا تم تقييم التعبير X إلى NULL، وإلا خطأ. يستغرق جميع الأنواع
X ليست فارغة FALSE إذا كانت قيمة التعبير X تساوي NULL، وإلا TRUE. يستغرق جميع الأنواع
X مثل Y صحيح إذا تطابق نمط السلسلة X مع Y، وإلا خطأ. يأخذ سلاسل فقط
X RLIKE Y NULL إذا كانت X أو Y فارغة، تكون TRUE إذا كانت أي سلسلة فرعية من X تطابق Java تعبير منتظم Y، وإلا فهو FALSE. يأخذ سلاسل فقط
X REGEXP Y نفس RLIKE. يأخذ سلاسل فقط

لاحظ أن المقارنة مع قيمة فارغة (NULL) لا تُرجع أبدًا قيمة صحيحة أو خاطئة. لهذا السبب، يُدرج الجدول عاملي IS NULL و IS NOT NULL كعاملين منفصلين بدلاً من افتراض أن X = NULL سيعمل.

HiveQL الحسابية Operaالاختصاصات

نستخدم عوامل التشغيل الحسابية لإجراء العمليات الحسابية على المعاملات.

  • العمليات الحسابية مثل الجمع والطرحtracتستخدم عمليات الضرب والقسمة بين المعاملات هذه العوامل.
  • جميع أنواع المعاملات في هذه العوامل هي أنواع أرقام.

مثال توضيحي:

2 + 3 تعطي النتيجة 5.

في هذا المثال، '+' هو المعامل، و2 و3 هما المعاملان، والقيمة المرجعة هي 5.

يوضح الجدول التالي تفاصيل حول عوامل التشغيل الحسابية في لغة استعلام Hive:

مدمج Operaتور الوصف Operand
X + ص سيُرجع ناتج إضافة قيمة X و Y. يستغرق جميع أنواع الأرقام
X - ص سيعيد هذا مخرجات الدالة الفرعيةtracقيمة Y من قيمة X. يستغرق جميع أنواع الأرقام
س * ي سيُرجع ناتج ضرب قيم X و Y. يستغرق جميع أنواع الأرقام
X / Y. سيُرجع ناتج تقسيم Y من X. يستغرق جميع أنواع الأرقام
× % ص سيعيد الباقي الناتج عن قسمة X على Y. يستغرق جميع أنواع الأرقام
X و Y سوف يقوم بإرجاع إخراج AND بتيًا لـ X و Y. يستغرق جميع أنواع الأرقام
X | ص سوف يقوم بإرجاع إخراج OR لكل بت من X و Y. يستغرق جميع أنواع الأرقام
X ^ ص سوف يقوم بإرجاع إخراج XOR ثنائي البت لـ X و Y. يستغرق جميع أنواع الأرقام
~X سوف يقوم بإرجاع إخراج NOT بتيًا لـ X. يستغرق جميع أنواع الأرقام

الصفوف الأربعة الأخيرة هي عمليات حسابية على مستوى البت بدلاً من العمليات الحسابية العادية: فهي تعمل على التمثيل الثنائي للمعاملات الصحيحة، لذا فإن & و | و ^ ليست هي نفسها AND و OR و NOT المنطقية التي تم تناولها في القسم التالي.

منطق HiveQL Operaالاختصاصات

نستخدم عوامل التشغيل المنطقية لإجراء العمليات المنطقية على المعاملات.

  • تستخدم العمليات المنطقية مثل AND و OR و NOT بين المعاملات هذه العوامل.
  • جميع أنواع المعاملات في هذه العوامل هي من النوع المنطقي (BOOLEAN).

يوضح الجدول التالي تفاصيل حول عوامل التشغيل المنطقية في HiveQL:

تدريب المشغلين والتقنيين الوصف Operaإدارة الأمن الوطني
X و Y صحيح إذا كان كل من X وY صحيحين، وإلا فهو خطأ. الأنواع المنطقية فقط
X && Y الأمر نفسه ينطبق على X و Y، ولكننا هنا نستخدم الرمز &&. الأنواع المنطقية فقط
X أو Y صحيح إذا كان X أو Y أو كلاهما صحيحًا، وإلا فهو خطأ. الأنواع المنطقية فقط
X || ص نفس الشيء بالنسبة لـ X أو Y، ولكن هنا نستخدم الرمز ||. الأنواع المنطقية فقط
ليس X صحيح إذا كان X خطأ، وإلا فهو خطأ. الأنواع المنطقية فقط
!X نفس الشيء بالنسبة لـ NOT X، ولكن هنا نستخدم رمز !. الأنواع المنطقية فقط

لأن عوامل المقارنة تُرجع قيمًا منطقية، فإن عوامل المقارنة المنطقية هي التي تجمعها: فشرط مثل salary > 50000 AND dept = 'Sales' يربط عائلة واحدة بالأخرى.

Operaنصائح حول الأنواع المعقدة

تعمل عوامل المقارنة والحساب والمنطق جميعها على قيم عددية مفردة. يخزن Hive أيضًا أعمدة المصفوفات والخرائط والهياكل، وتحتاج هذه الأخيرة إلى آلية مختلفة للوصول إلى العناصر الموجودة بداخلها. يوضح الجدول التالي تفاصيل عوامل الأنواع المركبة التي توفر هذه الآلية:

تدريب المشغلين والتقنيين Operaإدارة الأمن الوطني الوصف
أ[ن] A هو مصفوفة و n هو نوع صحيح ستُعيد هذه الدالة العنصر رقم n في المصفوفة A. العنصر الأول له فهرس 0.
م [مفتاح] م هي خريطة والمفتاح من النوع K ستُعيد القيمة التي تنتمي إلى المفتاح الموجود في الخريطة.

كلا الشكلين عبارة عن تعبيرات عادية، لذا يمكن أن يظهرا في قائمة SELECT أو عبارة WHERE أو GROUP BY، ويتم الوصول إلى حقل البنية باستخدام تدوين النقطة مثل S.field بدلاً من القوس.

منشئو النوع المعقد

بينما تقرأ المعاملات المذكورة أعلاه عمودًا معقدًا موجودًا، تقوم الدوال البانية بإنشاء عمود معقد. يوضح الجدول التالي تفاصيل حول الدوال البانية للأنواع المعقدة، والتي تُنشئ نسخًا من أنواع البيانات المعقدة - المصفوفة والخريطة والبنية - في Hive.

في هذا القسم، سنرى العمليات التي يتم إجراؤها على مُنشئات الأنواع المعقدة.

تدريب المشغلين والتقنيين Operaإدارة الأمن الوطني الوصف
مجموعة (فال1، فال2، ...) سيقوم بإنشاء مصفوفة بالعناصر المحددة كما ذكرنا، مثل val1 و val2.
إنشاء اتحاد (العلامة، val1، val2، ...) سيؤدي ذلك إلى إنشاء نوع اتحاد بالقيمة التي تتم الإشارة إليها بواسطة معلمة الوسم.
رسم خريطة (مفتاح 1، قيمة 1، مفتاح 2، قيمة 2، ...) سيقوم بإنشاء خريطة باستخدام أزواج المفاتيح/القيم المحددة والمذكورة في المعاملات.
بنية_مسماة (الاسم 1، val1، الاسم 2، val2، ...) سيقوم بإنشاء بنية بيانات تحتوي على أسماء الحقول والقيم المذكورة في المعاملات.
البنية (فال1، فال2، فال3، ...) يُنشئ بنية بيانات بقيم الحقول المُعطاة. ستكون أسماء حقول البنية col1 و col2 وهكذا.

تُستخدم الدوال البانية في أغلب الأحيان في عملية إدراج تقوم بتعبئة عمود معقد، أو في عملية تحديد تقوم بتجميع عدة أعمدة عددية في بنية واحدة قبل كتابة النتيجة إلى جدول آخر.

وظائف HiveQL المدمجة

Operaتغطي التورات المقارنة والحساب والوصول إلى العناصر، لكنها لا تقوم بتقريب الأرقام أو حذف أجزاء من السلاسل النصية أو إجراء عمليات فرعية.tracفي تاريخين. ينتمي هذا العمل إلى وظائف Hive المدمجة، والتي يتم استدعاؤها بالاسم داخل نفس التعبيرات التي تظهر فيها المعاملات. يصنف الجدول أدناه العائلات التي يتعرف عليها المبتدئ أولاً.

عائلة الوظائف الأعضاء النموذجيون ما يستخدم من أجله
رياضي round(), floor(), ceil(), abs(), pow(), sqrt(), rand() التقريب، والأسس، والحسابات العددية الأخرى على قيمة عمود واحد.
خيط concat()، substr()، upper()، lower()، trim()، length()، regexp_replace() التنظيف والتشذيب وإعادة التشكيلping النص قبل مقارنته أو تجميعه.
التاريخ التاريخ_الحالي، السنة()، الشهر()، الفرق_المؤرخ()، إضافة_التاريخ()، الطابع_الزمني_يونكس() Extracتحديد أجزاء التاريخ وقياس الفترات الزمنية بين تاريخين.
مشروط if(), CASE WHEN, coalesce(), nvl(), isnull() اختيار قيمة على مستوى الصف واستبدال القيمة الفارغة بقيمة احتياطية.
التشكيلات size()، map_keys()، map_values()، array_contains()، sort_array() فحص أعمدة المصفوفة والخريطة والبنية التي تصل إليها عوامل التشغيل ذات النوع المعقد.
اكتب التحويل cast()، binary() فرض نوع البيانات على عمود ما وفقًا لما يتوقعه عامل التشغيل.
التجميع (UDAF) count(), sum(), avg(), min(), max(), collect_set() دمج عدة صفوف في قيمة واحدة، عادةً مع عبارة GROUP BY.

تعتمد قائمة الدوال على إصدار Hive، لذا يُفضّل قراءتها من الجلسة نفسها بدلاً من صفحة ثابتة. يُمكن تحقيق ذلك من خلال عبارتين:

SHOW FUNCTIONS;

DESCRIBE FUNCTION round;

DESCRIBE FUNCTION EXTENDED round;

يعرض الأمر SHOW FUNCTIONS جميع الأسماء المسجلة، بينما يطبع الأمر DESCRIBE FUNCTION التوقيع المختصر، ويضيف الأمر EXTENDED أمثلة الاستخدام حيثما توفرها الفئة المنفذة. عندما لا تتناسب أي دالة مضمنة، يقبل Hive دالة معرفة من قبل المستخدم كتبت في Java.

HiveQL مقابل SQL: الاختلافات الرئيسية

يستعير HiveQL بنية SQL عن قصد، وستبدو جداول المعاملات المذكورة أعلاه مألوفة لأي شخص سبق له كتابة استعلامات SQL. إلا أن نموذج التنفيذ الأساسي مختلف، وتظهر الاختلافات بمجرد أن يتجاوز الاستعلام عبارة SELECT البسيطة.

السلوك خلية لغة SQL التقليدية (RDBMS)
معالجة المخططات تطبيق المخطط عند القراءة — يتم تطبيق المخطط عند الاستعلام عن الملف يتم تطبيق المخطط عند الكتابة — يتم تطبيق المخطط عند إدراج الصف
تحديث وحذف البيانات على مستوى الصف مدعوم فقط على جداول ACID؛ الجداول المُدارة تكون ACID افتراضيًا بدءًا من Hive 3.0 مدعوم على كل جدول بشكل افتراضي
الفهارس تمت إزالة دعم الفهرسة في Hive 3.0 (HIVE-18448)؛ ويتم استبداله بفهارس ORC أو Parquet على مستوى الملف والعروض المادية. تُعد شجرة B والفهارس الثانوية الأخرى ميزة أساسية
التنفيذ وزمن الاستجابة يتم تجميعها لوظائف الدفعات على Tez أو MapReduce أو Sparkلذا حتى الاستفسارات الصغيرة تنطوي على تكلفة بدء العمل التنفيذ التفاعلي، عادةً بالمللي ثانية
هدف التصميم معدل نقل البيانات عبر الملفات الكبيرة جدًا على نظام ملفات Hadoop الموزع (HDFS) أو مخزن الكائنات عمليات قراءة وكتابة منخفضة زمن الوصول على خادم واحد أو مجموعة خوادم

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

الأسئلة الشائعة

تُحل الكلمات المفتاحية، وكلمات المعاملات مثل AND أو LIKE، وأسماء الدوال دون مراعاة حالة الأحرف، لذا فإن SELECT و select يتصرفان بنفس الطريقة. أما بيانات السلاسل النصية فلا تُحل بهذه الطريقة: فمقارنة 'Sales' مع 'sales' تُرجع FALSE ما لم يتم تطبيق upper() أو lower() أولاً.

X / Y تُرجع دائمًا قيمة من نوع DOUBLE، حتى عندما يكون كلا المعاملين عددين صحيحين، لذا فإن 7 / 2 تعطي 3.5 بدلاً من 3. استخدم الكلمة المفتاحية DIV للقسمة الصحيحة ومعامل النسبة المئوية (%) للباقي.

تُمرر عوامل الحساب والمقارنة القيمة NULL: أي تعبير يتضمن NULL يُقيّم إلى NULL، وليس FALSE. اختبر باستخدام IS NULL أو IS NOT NULL، واستبدل القيمة بـ coalesce() أو nvl() قبل وصولها إلى عامل المقارنة.

تستخدم دالة LIKE أحرف البدل في لغة SQL، حيث يطابق الرمز % أي سلسلة من الأحرف، بينما يطابق الرمز _ حرفًا واحدًا. أما دالة RLIKE فتطابق حرفًا واحدًا. Java التعبير النمطي مقابل أي سلسلة فرعية من القيمة. REGEXP مرادف لـ RLIKE ويعمل بنفس الطريقة.

تُربط عوامل الحساب أولاً، ثم عوامل المقارنة، ثم النفي، ثم العطف، ثم العطف. ولأن هذا الترتيب قد يُساء فهمه في الجمل الطويلة، يُنصح باستخدام الأقواس كلما ظهر العطف والعطف في نفس الجملة.

نعم. تُشكّل عوامل الربط العلائقية والمنطقية شروط الربط، بينما تُنتج عوامل الحساب مجموعات.ping المفاتيح، والوصول من النوع المعقد مثل M[key] يكون صالحًا أينما يُسمح بالتعبير، بما في ذلك قوائم SELECT وعبارات WHERE و ORDER BY.

تقوم مساعدات التعلم الآلي بترجمة مُرشِّح اللغة البسيطة إلى مُسند مُرشَّح، وتُشير إلى حالات عدم تطابق الأنواع، مثل مُقارنة عمود نصي برقم. تأكد دائمًا من مُقارنة المُعامل المُولَّد بالجداول أعلاه، لأن اللهجات تختلف بين Hive. Spark SQL و Presto.

يتعامل هذا النظام مع الشروط الشائعة بكفاءة، ويقترح أنماطًا مثل coalesce() أو CASE WHEN من خلال تعليق قصير. كما أنه يدمج صيغًا من محركات أخرى، لذا تحقق من عوامل التشغيل الثنائية، والوصول إلى الأنواع المعقدة، وأي اسم دالة باستخدام DESCRIBE FUNCTION قبل تنفيذ الاستعلام.

تلخيص هذه التدوينة بـ: