تكييف التعليمات البرمجية ل Apache Spark exisiting ل Azure Databricks
توضح هذه المقالة التغييرات المطلوبة لتكييف أحمال عمل Apache Spark الحالية للتشغيل على Azure Databricks. سواء كنت تنتقل إلى Azure Databricks من مجموعة محلية أو بنية أساسية مخصصة مستندة إلى السحابة أو عرض Apache Spark لمؤسسة أخرى، تتطلب معظم أحمال العمل بعض التغييرات فقط للوصول إلى الإنتاج. يعمل Azure Databricks على توسيع أداء Apache Spark وتبسيطه وتحسينه من خلال إدخال تحسينات مخصصة وتكوين البنية الأساسية ونشرها والحفاظ على التبعيات في Databricks Runtime.
هام
عند ترقية إصدارات Apache Spark، قد تكون هناك تغييرات عاجلة على بناء الجملة. راجع إصدارات ملاحظات إصدار Databricks Runtime والتوافق ودليل ترحيل Spark.
توصي Databricks باستخدام Delta Lake بدلا من Parquet أو ORC عند كتابة البيانات. قامت Azure Databricks بتحسين العديد من الميزات لتحقيق الكفاءة عند التفاعل مع الجداول المدعومة من Delta Lake، ولا تستغرق ترقية البيانات ونموذج التعليمات البرمجية Parquet إلى Delta Lake سوى بضع خطوات. راجع ترحيل مستودع بيانات Parquet إلى Delta Lake.
نظرا لأن Delta Lake يوفر ضمانات معاملة ACID، فقد تتمكن من تبسيط أحمال العمل لإزالة الحلول البديلة الموجهة نحو إنشاء معاملات مستعارة في عمليات Apache Spark. تتضمن الأمثلة ما يلي:
- إنشاء بنية دليل أو استراتيجية تقسيم تسمح باكتشاف جميع الملفات من عملية معينة في وقت واحد كجزء من قسم.
- تكوين أو الاعتماد على metastore لإضافة المعاملات لكيفية اكتشاف البيانات الجديدة.
- استخدام
MSCK repair
لتسجيل الملفات المكتوبة إلى جدول إلى metastore. - استخدام
alter table add partition
لإضافة أقسام إلى جدول يدويا.
راجع متى يتم تقسيم الجداول على Azure Databricks.
ملاحظة
يمكنك تشغيل أحمال العمل دون ترقية تنسيقات البيانات المستخدمة، ولكن العديد من أكبر مكاسب الأداء على Azure Databricks مرتبطة مباشرة ب Delta Lake.
يأتي كل إصدار من Databricks Runtime مكونا مسبقا مع العديد من المكتبات المطلوبة في تطبيقات Apache Spark. يمكنك تثبيت مكتبات إضافية لحسابك كما هو مطلوب، ولكن عندما يكون ذلك ممكنا، توصي Databricks باستخدام إصدارات المكتبة المحزمة في وقت تشغيل Databricks التي يتم اختبارها للتوافق. يتضمن كل إصدار من إصدارات Databricks Runtime قائمة بجميع المكتبات المثبتة. راجع إصدارات ملاحظات إصدار Databricks Runtime والتوافق.
تعلن العديد من أحمال عمل Apache Spark القديمة صراحة عن SparkSession جديد لكل وظيفة. ينشئ Azure Databricks تلقائيا SparkContext لكل نظام مجموعة حساب، وينشئ SparkSession معزول لكل دفتر ملاحظات أو مهمة يتم تنفيذها على نظام المجموعة. يمكنك الحفاظ على القدرة على التحويل البرمجي واختبار التعليمات البرمجية محليا ثم النشر إلى Azure Databricks عن طريق ترقية هذه الأوامر لاستخدام SparkSession.builder().getOrCreate()
.
يتطلب Apache Spark من البرامج الإعلان صراحة عن اكتمالها باستخدام أوامر مثل sys.exit()
أو sc.stop()
. يقوم Azure Databricks تلقائيا بإنهاء المهام وتنظيفها عند الوصول إلى الاكتمال، لذلك هذه الأوامر ليست ضرورية ويجب إزالتها.
يقوم Azure Databricks أيضا تلقائيا بإنهاء وتنظيف أحمال عمل Structured Streaming عند إنهاء التشغيل، حتى تتمكن من إزالة awaitTermination()
الأوامر المشابهة من تطبيقات Structured Streaming.
يقوم Azure Databricks بتكوين جميع الإعدادات لبرنامج التشغيل والمنفذين في مجموعة الحوسبة تلقائيا لزيادة المرونة واستخدام الموارد إلى أقصى حد. يمكن أن يؤدي توفير تكوينات مخصصة للمنفذين أو JVM إلى انخفاض الأداء. توصي Databricks فقط بتعيين تكوينات Spark الضرورية للتحكم في معالجة النوع أو الدوال بحيث يظل المنطق متسقا.
الآن بعد أن قمت بإزالة الأنماط والأوامر والإعدادات التي قد تتداخل مع تنفيذ Azure Databricks، يمكنك تشغيل أحمال العمل في بيئة اختبار ومقارنة الأداء والنتائج بالبنية الأساسية القديمة. بينما لا يزال من الممكن الاستفادة من العديد من المهارات التي قد طورها فريقك لاستكشاف الأخطاء وإصلاحها وتحسين الأداء لأحمال عمل Apache Spark على Azure Databricks، يمكنك في كثير من الأحيان رؤية مكاسب أكبر من خطوات الترقية لاستخدام ميزات جديدة في Apache Spark أو Delta Lake أو منتجات Azure Databricks المخصصة.