البرنامج التعليمي للخلية - هندسة الخلية ودراسة حالة ناسا



تمنحك مدونة Hive التعليمية هذه معرفة متعمقة حول Hive Architecture و Hive Data Model. كما يشرح دراسة الحالة لوكالة ناسا حول Apache Hive.

برنامج Apache Hive التعليمي: مقدمة

Hive هي أداة مستخدمة بشكل صارم على مستوى الصناعة لتحليلات البيانات الكبيرة وأداة رائعة لبدء تشغيل مع. في مدونة Hive التعليمية هذه ، سنناقش بعمق حول Apache Hive. Apache Hive هي أداة لتخزين البيانات في ملف ، والذي يوفر لغة مثل SQL للاستعلام عن البيانات الضخمة وتحليلها. الدافع وراء تطوير Hive هو مسار التعلم الأقل احتكاكًا لمطوري ومحللي SQL. Hive ليس فقط منقذًا للأشخاص من خلفية غير برمجة ، ولكنه يقلل أيضًا من عمل المبرمجين الذين يقضون ساعات طويلة في كتابة برامج MapReduce. في مدونة Apache Hive Tutorial هذه ، سأتحدث عن:





برنامج Apache Hive التعليمي: ما هي الخلية؟

Apache Hive هو نظام مستودع بيانات مبني على قمة Hadoop ويستخدم لتحليل البيانات المنظمة وشبه المنظمة.تستخلص الخلية تعقيد Hadoop MapReduce. بشكل أساسي ، يوفر آلية لعرض البنية على البيانات وتنفيذ الاستعلامات المكتوبة بلغة HQL (لغة استعلام Hive) التي تشبه عبارات SQL. داخليًا ، يتم تحويل هذه الاستعلامات أو HQL إلى خريطة لتقليل الوظائف بواسطة مترجم Hive. لذلك ، لا داعي للقلق بشأن كتابة برامج MapReduce المعقدة لمعالجة بياناتك باستخدام Hadoop. يستهدف المستخدمين الذين يشعرون بالراحة مع SQL. تدعم Apache Hive لغة تعريف البيانات (DDL) ولغة معالجة البيانات (DML) والوظائف المعرفة من قبل المستخدم (UDF).

برنامج Hive التعليمي للمبتدئين | فهم الخلية في العمق | إدوريكا



SQL + Hadoop MapReduce = HiveQL

دروس Apache Hive: Story of Hive - من Facebook إلى Apache

حالة استخدام Facebook - برنامج Hive التعليمي - Edurekaتين : Hive Tutorial - حالة استخدام Facebook

التحديات في Facebook: النمو المتسارع للبيانات

قبل عام 2008 ، تم إنشاء جميع البنية التحتية لمعالجة البيانات في Facebook حول مستودع بيانات يعتمد على RDBMS التجارية. كانت هذه البنى التحتية قادرة على تلبية احتياجات Facebook في ذلك الوقت. ولكن ، مع بدء نمو البيانات بسرعة كبيرة ، أصبح من الصعب للغاية إدارة مجموعة البيانات الضخمة هذه ومعالجتها. وفقًا لمقال على Facebook ، تم قياس البيانات من مجموعة بيانات 15 تيرابايت في عام 2007 إلى بيانات 2 PB في عام 2009. أيضًا ، تتضمن العديد من منتجات Facebook تحليل البيانات مثل Audience Insights و Facebook Lexicon و Facebook Ads وما إلى ذلك. احتاج إلى حل اقتصادي قابل للتطوير للتعامل مع هذه المشكلة بالذات ، وبالتالي بدأ في استخدام إطار عمل Hadoop.



الدمقرطة Hadoop - MapReduce

ولكن ، مع نمو البيانات ، زاد تعقيد رموز Map-Reduce بشكل متناسب. لذلك ، أصبح تدريب الأشخاص ذوي الخلفية غير البرمجية على كتابة برامج MapReduce أمرًا صعبًا. أيضًا ، لإجراء تحليل بسيط ، يتعين على المرء كتابة مائة سطر من كود MapReduce. منذ ذلك الحين ، تم استخدام SQL على نطاق واسع من قبل المهندسين والمحللين ، بما في ذلك Facebook ، وبالتالي ، فإن وضع SQL على رأس Hadoop بدا طريقة منطقية لجعل Hadoop في متناول المستخدمين الذين لديهم خلفية SQL.

ومن ثم ، فإن قدرة SQL على الاكتفاء بمعظم المتطلبات التحليلية وإمكانية التوسع في Hadoop أدت إلى ظهور اباتشي خلية يسمح بإجراء استعلامات مثل SQL على البيانات الموجودة في HDFS. في وقت لاحق ، تم فتح مشروع Hive في أغسطس 2008 بواسطة Facebook وهو متاح مجانًا اليوم باسم Apache Hive.

الآن ، دعونا نلقي نظرة على ميزات أو مزايا Hive التي تجعلها شائعة جدًا.

البرنامج التعليمي Apache Hive: مزايا الخلية

  • مفيد للأشخاص الذين ليسوا من خلفية برمجة لأنه يلغي الحاجة إلى كتابة برنامج MapReduce معقد.
  • توسع و القابلة للتطوير لمواكبة الحجم المتزايد وتنوع البيانات ، دون التأثير على أداء النظام.
  • إنها أداة فعالة ETL (استخراج وتحويل وتحميل).
  • يدعم Hive أي تطبيق عميل مكتوب بلغة Java أو PHP أو Python أو C ++ أو Ruby من خلال الكشف عن ملفات خادم التوفير . (يمكنك استخدام لغات جانب العميل المضمنة في SQL للوصول إلى قاعدة بيانات مثل DB2 وما إلى ذلك).
  • نظرًا لأنه يتم تخزين معلومات البيانات الوصفية لـ Hive في RDBMS ، فإنها تقلل بشكل كبير من الوقت اللازم لإجراء عمليات التحقق الدلالية أثناء تنفيذ الاستعلام.

ما هو متسلسل في جافا

برنامج Apache Hive التعليمي: أين يمكن استخدام Apache Hive؟

تستفيد Apache Hive من كلا العالمين ، مثل نظام قاعدة بيانات SQL و إطار العمل. لذلك ، يتم استخدامه من قبل عدد كبير من الشركات. يتم استخدامه في الغالب لتخزين البيانات حيث يمكنك إجراء التحليلات واستخراج البيانات التي لا تتطلب معالجة في الوقت الفعلي. فيما يلي بعض الحقول حيث يمكنك استخدام Apache Hive:

  • تخزين البيانات
  • التحليل المخصص

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

البرنامج التعليمي للخلية: دراسة حالة ناسا

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

يتكون RCMES (نظام تقييم نموذج المناخ الإقليمي) من مكونين:

  • RCMED (قاعدة بيانات تقييم نموذج المناخ الإقليمي):

إنها قاعدة بيانات سحابية قابلة للتطوير تقوم بتحميل بيانات الاستشعار عن بعد وبيانات إعادة التحليل المرتبطة بالمناخ باستخدام مستخلصات مثل مستخلصات Apache OODT و Apache Tika وما إلى ذلك. وأخيرًا ، تقوم بتحويل البيانات كنموذج نقطة البيانات الذي هو من الشكل (خط العرض وخط الطول والوقت والقيمة والارتفاع) ويخزنها في قاعدة بيانات My SQL. يمكن للعميل استرداد البيانات الموجودة في RCMED عن طريق إجراء استعلامات الفضاء / الوقت. وصف مثل هذه الاستعلامات ليس مناسبًا لنا الآن.

  • RCMET (مجموعة أدوات تقييم نموذج المناخ الإقليمي):

يوفر للمستخدم القدرة على مقارنة البيانات المرجعية الموجودة في RCMED مع بيانات مخرجات نموذج المناخ التي تم جلبها من بعض المصادر الأخرى لإجراء أنواع مختلفة من التحليل والتقييم. يمكنك الرجوع إلى الصورة الواردة أدناه لفهم بنية RCMES.

تأتي البيانات المرجعية في RCMED من الاستشعار عن بعد القائم على الأقمار الصناعية ، وفقًا للمعايير المختلفة المطلوبة لتقييم نموذج المناخ. على سبيل المثال - توفر AIRS (مسبار الأشعة تحت الحمراء في الغلاف الجوي) معلمات مثل درجة حرارة الهواء السطحي ودرجة الحرارة والجهد الجغرافي ، وتوفر TRMM (مهمة قياس هطول الأمطار الاستوائية) هطول الأمطار شهريًا ، إلخ

المشكلات التي واجهتها ناسا باستخدام نظام قاعدة بيانات MySQL:

  • بعد تحميل قاعدة بيانات MySQL بـ 6 مليارات مجموعة من النموذج (خط العرض ، خط الطول ، الوقت ، قيمة نقطة البيانات ، الارتفاع) ، تعطل النظام كما هو موضح في الصورة أعلاه.
  • حتى بعد تقسيم الجدول بأكمله إلى مجموعات فرعية أصغر ، قام النظام بتوليد عبء ضخم أثناء معالجة البيانات.

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

كيف يمكن أن تحل Apache Hive المشكلة؟

الآن ، دعنا نرى ، ما هي تلك الميزات التي أقنعت فريق مختبر الدفع النفاث التابع لناسا بتضمين Apache Hive كجزء لا يتجزأ من إستراتيجية الحلول الخاصة بهم:

  • منذ ذلك الحين ، يعمل Apache Hive أعلى Hadoop ، وهو قابل للتطوير ويمكنه معالجة البيانات بطريقة موزعة ومتوازية.
  • يوفر Hive Query Language التي تشبه SQL وبالتالي فهي سهلة التعلم.

انتشار الخلية:

توضح الصورة التالية مهندس RCMES مع تكامل Apache Hive:

تين : Hive Tutorial - RCMES Architecture مع Apache Hive

توضح الصورة أعلاه نشر خلية أباتشي في RCMES. تم اتخاذ الخطوات التالية من قبل فريق ناسا أثناء نشر Apache Hive:

  • قاموا بتثبيت Hive باستخدام Cloudera و Apache Hadoop كما هو موضح في الصورة أعلاه.
  • استخدموا Apache Sqoop لاستيعاب البيانات في الخلية من قاعدة بيانات MySQL.
  • تم تنفيذ برنامج تضمين Apache OODT لإجراء استعلامات على Hive واسترداد البيانات مرة أخرى إلى RCMET.

ملاحظات المقارنة المعيارية الأولية مع الخلية:

  • في البداية قاموا بتحميل 2.5 مليار نقطة بيانات في جدول واحد وأجروا استعلام حساب. فمثلا، خلية> حدد العد (datapoint_id) من dataPoint. استغرق عد كل السجلات من 5 إلى 6 دقائق (15-17 دقيقة لكامل 6.8 مليار سجل).
  • كانت مرحلة التخفيض سريعة ، لكن مرحلة الخريطة استغرقت 95٪ من إجمالي وقت المعالجة. كانوا يستخدمون ستة ( 4x رباعي النواة ) أنظمة ذات 24 جيجا بايت رام (تقريبًا) في كل نظام.
  • حتى بعد إضافة المزيد من الأجهزة ، قم بتغيير حجم كتلة HDFS (64 ميجابايت ، 128 ميجابايت ، 256 ميجابايت) وتغيير العديد من متغيرات التكوين الأخرى (io.فرز.العامل الأول.فرز.ميغابايت) ، لم ينجحوا كثيرًا في تقليص الوقت اللازم لإكمال العد.

مدخلات من أعضاء مجتمع Hive:

أخيرًا ، جاء أعضاء مجتمع Hive لإنقاذهم وقدموا رؤى مختلفة لحل المشكلات من خلال تطبيقاتهم الحالية Hive:

  • لقد ذكروا أن سرعة قراءة HDFS تقارب 60 ميغا بايت / ثانية مقارنة ب 1 جيجابايت / ثانية في حالة وجود قرص محلي ، اعتمادًا على سعة الشبكة وعبء العمل على NameNode.
  • اقترح الأعضاء ذلك 16 رسام خرائط ستكون مطلوبة في نظامهم الحالي لمطابقة أداء الإدخال / الإخراج لمهمة محلية غير Hadoop.
  • واقترحوا أيضا للحد من حجم الانقسام لكل مصمم خرائط لزيادة الرقممنمصممي الخرائط وبالتالي توفير المزيد من التوازي.
  • أخيرًا ، أخبرهم أفراد المجتمع بذلك استخدام العد (1) بدلا من الاشارة الى العد ( datapoint_id) . هذا لأنه في حالة العد (1) ، لا يوجد عمود مرجعي وبالتالي ، لا يحدث إلغاء الضغط وإلغاء التسلسل أثناء إجراء العد.

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

البرنامج التعليمي Apache Hive: بنية الخلية ومكوناتها

تصف الصورة التالية بنية الخلية والتدفق الذي يتم فيه إرسال الاستعلامخلية نحلوأخيرًا تمت معالجتها باستخدام إطار عمل MapReduce:

تين : Hive Tutorial - Hive Architecture

كما هو موضح في الصورة أعلاه ، يمكن تصنيف بنية الخلية إلى المكونات التالية:

  • عملاء الخلية: يدعم Hive التطبيق المكتوب بعدة لغات مثل Java و C ++ و Python وما إلى ذلك باستخدام برامج تشغيل JDBC و Thrift و ODBC. ومن ثم يمكن للمرء دائمًا كتابة تطبيق عميل خلية مكتوب بلغة من اختياره.
  • خدمات Hive: توفر Apache Hive خدمات متنوعة مثل CLI وواجهة الويب وما إلى ذلك لإجراء الاستعلامات. سوف نستكشف كل واحد منهم قريبًا في مدونة Hive التعليمية هذه.
  • إطار المعالجة وإدارة الموارد: داخليا،يستخدم Hive إطار عمل Hadoop MapReduce كمحرك فعلي لتنفيذ الاستعلامات. هو موضوع منفصل في حد ذاته ، وبالتالي ، لم تتم مناقشته هنا.
  • التخزين الموزع: نظرًا لأنه يتم تثبيت Hive أعلى Hadoop ، فإنه يستخدم HDFS الأساسي للتخزين الموزع. يمكنك الرجوع إلى مدونة HDFS لمعرفة المزيد عنها.

الآن ، دعنا نستكشف أول مكونين رئيسيين في Hive Architecture:

1. عملاء الخلية:

تدعم Apache Hive أنواعًا مختلفة من تطبيقات العميل لتنفيذ الاستعلامات على الخلية. يمكن تصنيف هؤلاء العملاء إلى ثلاثة أنواع:

  • عملاء التوفير: نظرًا لأن خادم Hive يعتمد على Apache Thrift ، فيمكنه تقديم الطلب من جميع لغات البرمجة التي تدعم Thrift.
  • عملاء JDBC: يسمح Hive لتطبيقات Java بالاتصال به باستخدام برنامج تشغيل JDBC المحدد في الفئة org.اباتشي.هادوب.خلية. jdbc.هايف درايفر.
  • عملاء ODBC: يسمح برنامج تشغيل Hive ODBC للتطبيقات التي تدعم بروتوكول ODBC بالاتصال بـ Hive. (مثل برنامج تشغيل JDBC ، يستخدم برنامج تشغيل ODBC Thrift للتواصل مع خادم Hive.)

2. خدمات Hive:

يوفر Hive العديد من الخدمات كما هو موضح في الصورة أعلاه. دعونا نلقي نظرة على كل منهم:

  • خلية CLI (واجهة سطر الأوامر): هذه هي الصدفة الافتراضية التي توفرها Hive حيث يمكنك تنفيذ أوامر وأوامر Hive مباشرة.
  • واجهات ويب Apache Hive: بصرف النظر عن واجهة سطر الأوامر ، يوفر Hive أيضًا واجهة مستخدم رسومية على الويب لتنفيذ أوامر وأوامر Hive.
  • خادم الخلية: تم بناء خادم Hive على Apache Thrift ، وبالتالي ، يشار إليه أيضًا باسم Thrift Server الذي يسمح للعملاء المختلفين بإرسال طلبات إلى Hive واسترداد النتيجة النهائية.
  • سائق Apache Hive: وهي مسؤولة عن تلقي الاستفسارات المقدمة من خلال واجهة CLI أو واجهة مستخدم الويب أو Thrift أو ODBC أو JDBC من قبل العميل. بعد ذلك ، يقوم السائق بتمرير الاستعلام إلى المترجم حيث يتم التحليل والتحقق من النوع والتحليل الدلالي بمساعدة المخطط الموجود في المخزن الرئيسي. في الخطوة التالية ، يتم إنشاء خطة منطقية محسّنة على شكل DAG (رسم بياني دوري مباشر) لمهام تقليل الخريطة ومهام HDFS. أخيرًا ، ينفذ محرك التنفيذ هذه المهام بترتيب تبعياتها ، باستخدام Hadoop.
  • ميتاستور: يمكنك التفكير في metastoreكمستودع مركزي لتخزين جميع معلومات واصفات بيانات Hive. تتضمن بيانات تعريف الخلية أنواعًا مختلفة من المعلومات مثل بنية الجداول والأقسامجنبًا إلى جنب مع العمود ونوع العمود والمسلسل ومزيل التسلسل المطلوب لعملية القراءة / الكتابة على البيانات الموجودة في HDFS. النقيلةيتكون من وحدتين أساسيتين:
    • خدمة توفر metastoreالوصول إلى أخرىصخدمات هايف.
    • تخزين القرص للبيانات الوصفية المنفصلة عن تخزين HDFS.

الآن ، دعونا نفهم الطرق المختلفة لتنفيذ Hive metastoreفي القسم التالي من هذا البرنامج التعليمي Hive.

دروس Apache Hive: تكوين Metastore

يخزن Metastore معلومات البيانات الوصفية باستخدام RDBMS وطبقة ORM مفتوحة المصدر (نموذج علاقي للكائن) تسمى Data Nucleus والتي تحول تمثيل الكائن إلى مخطط علائقي والعكس صحيح. السبب في اختيار RDBMS بدلاً من HDFS هو تحقيق زمن انتقال منخفض. يمكننا تنفيذ metastore في التكوينات الثلاثة التالية:

1. Metastore مضمن:

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

2. Metastore المحلي:

يسمح لنا هذا التكوين بإجراء جلسات Hive متعددة ، أي يمكن لعدة مستخدمين استخدام قاعدة بيانات metastore في نفس الوقت. يتم تحقيق ذلك باستخدام أي قاعدة بيانات متوافقة مع JDBC مثل MySQL والتي تعمل في JVM منفصلة أو جهاز مختلف عن تلك الخاصة بخدمة Hive وخدمة metastore التي تعمل في نفس JVM كما هو موضح أعلاه. بشكل عام ، الخيار الأكثر شيوعًا هو استخدام خادم MySQL كقاعدة بيانات metastore.

3. Metastore البعيد:

في تكوين metastore البعيد ، تعمل خدمة metastore على JVM منفصلة خاصة بها وليس في خدمة Hive JVM. تتواصل العمليات الأخرى مع خادم metastore باستخدام Thrift Network APIs. يمكنك الحصول على خادم metastore واحد أو أكثر في هذه الحالة لتوفير مزيد من التوفر.الميزة الرئيسية لاستخدام metastore عن بعد هي أنك لست بحاجة إلى مشاركة بيانات اعتماد تسجيل دخول JDBC مع كل مستخدم Hive للوصول إلى قاعدة بيانات metastore.

برنامج Apache Hive التعليمي: نموذج البيانات

يمكن تصنيف البيانات الموجودة في الخلية إلى ثلاثة أنواع على المستوى الحبيبي:

  • الطاولة
  • تقسيم
  • دلو

الجداول:

الجداول في الخلية هي نفسها الجداول الموجودة في قاعدة البيانات العلائقية. يمكنك إجراء عمليات التصفية والمشروع والانضمام والتوحيد عليها. يوجد نوعان من الجداول في الخلية:

متى تستخدم هذا. في جافا

1. الجدول المُدار:

أمر:

إنشاء جدول (العمود 1 نوع البيانات ، العمود 2 نوع البيانات)

LOAD DATA INPATH INTO جدول مدار

كما يوحي الاسم (الجدول المُدار) ، فإن Hive مسؤولة عن إدارة بيانات الجدول المُدار. بمعنى آخر ، ما قصدته بقولي ، 'Hive Manages the data' ، هو أنك إذا قمت بتحميل البيانات من ملف موجود في HDFS إلى خلية الجدول المُدار وإصدار أمر DROP عليه ، سيتم حذف الجدول مع البيانات الوصفية الخاصة به. لذلك ، تنتمي البيانات إلى المسقط Managed_table لم يعد موجودًا في أي مكان في HDFS ولا يمكنك استرداده بأي وسيلة. بشكل أساسي ، تقوم بنقل البيانات عند إصدار أمر LOAD من موقع ملف HDFS إلى دليل مستودع Hive.

ملحوظة: تم تعيين المسار الافتراضي لدليل المستودع على / user / hive / Warehouse. توجد بيانات جدول Hive في Warehouse_directory / table_name (HDFS). يمكنك أيضًا تحديد مسار دليل المستودع في معلمة التكوين hive.metastore.warehouse.dir الموجودة في hive-site.xml.

2. الجدول الخارجي:

أمر:

إنشاء جدول خارجي (العمود 1 نوع البيانات ، العمود 2 نوع البيانات) الموقع ''

LOAD DATA INPATH '' في الجدول

إلى عن على طاولة خارجية ، Hive ليست مسؤولة عن إدارة البيانات. في هذه الحالة ، عند إصدار أمر LOAD ، تقوم Hive بنقل البيانات إلى دليل المستودع الخاص بها. بعد ذلك ، يقوم Hive بإنشاء معلومات البيانات الأولية للجدول الخارجي. الآن ، إذا قمت بإصدار أمر DROP على ملف طاولة خارجية ، سيتم حذف معلومات البيانات الوصفية المتعلقة بالجدول الخارجي فقط. لذلك ، لا يزال بإمكانك استرداد بيانات هذا الجدول الخارجي للغاية من دليل المستودع باستخدام أوامر HDFS.

أقسام:

أمر:

إنشاء اسم الجدول الجدول (العمود 1 نوع البيانات ، العمود 2 نوع البيانات) مقسم حسب (نوع البيانات القسم 1 ، نوع البيانات القسم 2 ، & hellip.)

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

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

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

لنفترض أن لدينا بيانات لثلاثة أقسام في جدول student_details - CSE و ECE و Civil. لذلك ، سيكون لدينا ثلاثة أقسام في المجموع لكل قسم كما هو موضح في الصورة أدناه. وبالنسبة لكل قسم ، سيكون لدينا جميع البيانات المتعلقة بهذا القسم الذي يقيم في دليل فرعي منفصل ضمن دليل جدول Hive. على سبيل المثال ، سيتم تخزين جميع بيانات الطلاب المتعلقة بأقسام محرك البحث المخصص في user / hive / Warehouse / student_details / dept. = CSE. لذلك ، فإن الاستفسارات المتعلقة بطلاب CSE يجب أن تبحث فقط في البيانات الموجودة في قسم CSE. هذا يجعل التقسيم مفيدًا جدًا لأنه يقلل من وقت استجابة الاستعلام عن طريق المسح فقط ذو صلة البيانات المقسمة بدلاً من مجموعة البيانات الكاملة. في الواقع ، في تطبيقات العالم الحقيقي ، سوف تتعامل مع مئات من تيرا بايت من البيانات. لذا ، تخيل مسح هذا الكم الهائل من البيانات لبعض الاستعلام أين 95٪ لم تكن البيانات التي تم مسحها ضوئيًا ذات صلة بطلب بحثك.

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

اذهب للعمل في بيثون

دلاء:

الأوامر:

إنشاء جدول_اسم_جدول مقسم حسب (نوع_تقسيم_البيانات ، قسم 2 نوع_بيانات ، & hellip.) مغلق حسب (اسم_عمود 1 ، اسم_عمود 2 ،…) مرتبة حسب (اسم_العمود [ASC | DESC] ، ...)] في عدد_باكات BUCKETS

الآن ، يمكنك تقسيم كل قسم أو جدول غير مقسم إلى مجموعات بناءً على وظيفة التجزئة لعمود في الجدول. في الواقع ، كل مجموعة هي مجرد ملف في دليل الأقسام أو دليل الجدول (جدول غير مقسم). لذلك ، إذا اخترت تقسيم الأقسام إلى مجموعات n ، فسيكون لديك عدد n من الملفات في كل دليل قسم. على سبيل المثال ، يمكنك رؤية الصورة أعلاه حيث قمنا بتجميع كل قسم في دلاء 2. لذلك ، سيحتوي كل قسم ، على سبيل المثال CSE ، على ملفين حيث سيخزن كل منهما بيانات طالب CSE.

كيف توزع الخلية الصفوف في دلاء؟

حسنًا ، تحدد Hive رقم المجموعة لصف باستخدام الصيغة: وحدة دالة التجزئة (عمود_الجمع) (عدد_الأربطة) . هنا ، حتعتمد دالة ash_function على نوع بيانات العمود. على سبيل المثال ، إذا كنت تقوم بتجميع الجدول على أساس عمود ما ، دعنا نقول user_id ، من نوع بيانات INT ، فستكون دالة التجزئة - hash_function (user_id ) = قيمة عددية لـ user_id . ولنفترض أنك أنشأت مجموعتين ، فستحدد Hive الصفوف التي تنتقل إلى المجموعة 1 في كل قسم عن طريق حساب: (قيمة معرف المستخدم) modulo (2). لذلك ، في هذه الحالة ، سوف تتواجد الصفوف التي تنتهي بـ user_id برقم صحيح زوجي في نفس المجموعة المقابلة لكل قسم. إن دالة التجزئة لأنواع البيانات الأخرى معقدة بعض الشيء لحسابها وفي الواقع ، بالنسبة لسلسلة لا يمكن التعرف عليها حتى من قبل الإنسان.

ملحوظة: إذا كنت تستخدم Apache Hive 0.x أو 1.x ، فيجب عليك إصدار الأمر - set hive.enforce.bucketing = true من محطة Hive الخاصة بك قبل تنفيذ الحزم. سيسمح لك هذا بالحصول على العدد الصحيح من المخفض أثناء استخدام الكتلة بفقرة لتجميع عمود. في حالة عدم قيامك بذلك ، قد تجد أن عدد الملفات التي تم إنشاؤها في دليل الجدول الخاص بك لا يساوي عدد المجموعات. كبديل ، يمكنك أيضًا تعيين عدد المخفض مساويًا لعدد المجموعات باستخدام تعيين mapred.reduce.task = num_bucket.

لماذا نحتاج دلاء؟

هناك سببان رئيسيان لأداء الحاوية إلى قسم:

  • إلى خريطة جانب الانضمام يتطلب أن تكون البيانات التي تنتمي إلى مفتاح ربط فريد موجودة في نفس القسم. ولكن ماذا عن تلك الحالات التي يختلف فيها مفتاح القسم عن الانضمام؟ لذلك ، في هذه الحالات ، يمكنك إجراء ربط جانب الخريطة عن طريق تجميع الجدول باستخدام مفتاح الربط.
  • يجعل الحزم عملية أخذ العينات أكثر كفاءة ، وبالتالي ، يسمح لنا بتقليل وقت الاستعلام.

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

الآن بعد أن فهمت Apache Hive وميزاتها ، تحقق من ملف من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تساعد الدورة التدريبية لشهادة Edureka Big Data Hadoop المتعلمين على أن يصبحوا خبراء في مجال HDFS ، و Yarn ، و MapReduce ، و Pig ، و Hive ، و HBase ، و Oozie ، و Flume ، و Sqoop باستخدام حالات الاستخدام في الوقت الفعلي في مجال البيع بالتجزئة ، ووسائل التواصل الاجتماعي ، والطيران ، والسياحة ، والمالية

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.