استخدم Microsoft .NET لـ Apache Spark مع Azure Synapse Analytics

يوفر .NET لـ Apache Spark دعمًا مجانيًا ومصدرًا مفتوحًا ومتعدد الأنظمة الأساسية لـ Spark.

يوفر روابط .NET لـ Spark، والتي تسمح لك بالوصول إلى واجهات برمجة تطبيقات Spark من خلال C# وF#. باستخدام .NET لـ Apache Spark، يمكنك أيضًا كتابة وتنفيذ الوظائف المعرّفة من قبل المستخدم لـ Spark المكتوبة في .NET. تمكنك واجهات برمجة تطبيقات .NET لـ Spark من الوصول إلى جميع جوانب Spark DataFrames التي تساعدك على تحليل بياناتك، بما في ذلك Spark SQL وData Lake وSpark Structured Streaming.

بإمكانك تحليل البيانات باستخدام .NET لـ Apache Spark من خلال تعريفات وظائف دفعة Spark أو باستخدام دفاتر ملاحظات Azure Synapse Analytics التفاعلية. في هذه المقالة، ستتعلم كيفية استخدام .NET لـ Apache Spark مع Azure Synapse باستخدام كلتا التقنيتين.

هام

.NET ل Apache Spark هو مشروع مفتوح المصدر ضمن .NET Foundation يتطلب حاليا مكتبة .NET 3.1، والتي وصلت إلى حالة خارج الدعم. نود إعلام المستخدمين ب Azure Synapse Spark بإزالة مكتبة .NET ل Apache Spark في Azure Synapse Runtime للإصدار 3.3 من Apache Spark. يمكن للمستخدمين الرجوع إلى نهج دعم .NET للحصول على مزيد من التفاصيل حول هذه المسألة.

ونتيجة لذلك، لن يكون من الممكن للمستخدمين استخدام واجهات برمجة تطبيقات Apache Spark عبر C# وF#، أو تنفيذ التعليمات البرمجية C# في دفاتر الملاحظات داخل Synapse أو من خلال تعريفات وظيفة Apache Spark في Synapse. من المهم ملاحظة أن هذا التغيير يؤثر فقط على وقت تشغيل Azure Synapse ل Apache Spark 3.3 وما فوق.

سنواصل دعم .NET ل Apache Spark في جميع الإصدارات السابقة من وقت تشغيل Azure Synapse وفقا لمراحيل دورة الحياة الخاصة بهم. ومع ذلك، ليس لدينا خطط لدعم .NET ل Apache Spark في وقت تشغيل Azure Synapse ل Apache Spark 3.3 والإصدارات المستقبلية. نوصي بأن يقوم المستخدمون الذين لديهم أحمال عمل موجودة مكتوبة بلغة C# أو F# بالترحيل إلى Python أو Scala. ينصح المستخدمون بتدوين هذه المعلومات والتخطيط وفقا لذلك.

إرسال مهام الدُّفعات باستخدام تعريف وظيفة Spark

تفضل بزيارة البرنامج التعليمي لمعرفة كيفية استخدام Azure Synapse Analytics لإنشاء تعريفات وظيفة Apache Spark لتجمعات Synapse Spark. في حال لم تكن قد حزمت تطبيقك لإرساله إلى Azure Synapse، فأكمل الخطوات التالية.

  1. كون تبعيات تطبيقك dotnet للتوافق مع Synapse Spark. سيتم ملاحظة إصدار .NET Spark المطلوب في واجهة Synapse Studio ضمن تكوين تجمع Apache Spark، ضمن مربع أدوات الإدارة.

    Screenshot that shows properties, including the .NET Spark version.

    أنشئ مشروعك كتطبيق وحدة تحكم .NET الذي يقوم بإخراج Ubuntu x86 قابل للتنفيذ.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.Spark" Version="2.1.0" />
      </ItemGroup>
    
    </Project>
    
  2. شغّل الأوامر التالية لنشر تطبيقك. تأكد من استبدال mySparkApp بالمسارِ إلى تطبيقك.

    cd mySparkApp
    dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.18.04-x64
    
  3. اضغط على محتويات مجلد النشر، publish.zip على سبيل المثال، الذي تم إنشاؤه نتيجة للخطوة 1. ينبغي أن تكون جميع التجميعات في جذر ملف ZIP ويجب ألا تكون هناك طبقة مجلد وسيطة. وهذا يعني أنه عند فك ضغط publish.zip، يتم استخراج جميع التجميعات في دليل العملِ الحالي.

    على Windows:

    باستخدام Windows PowerShell أو PowerShell 7، قم بإنشاء .zip من محتويات دليل النشر الخاص بك.

    Compress-Archive publish/* publish.zip -Update
    

    على نظام Linux:

    افتح bash shell والقرص المضغوط في دليل الحاوية مع كافة الثنائيات المنشورة وشغّل الأمر التالي.

    zip -r publish.zip
    

.NET لـ Apache Spark في دفاتر Azure Synapse Analytics

تعد دفاتر الملاحظات خيارًا رائعًا لنماذج .NET الخاصة بك لخطوط أنابيب وسيناريوهات Apache Spark. بإمكانك البدء في العمل مع بياناتك وفهمها وتصفيتها وعرضها وتصورها بسرعة وكفاءة.

يمكن لمهندسي البيانات وعلماء البيانات ومحللي الأعمال ومهندسي التعلمِ الآلي التعاون عبر مستند تفاعلي مشترك. ترى نتائج فورية من استكشاف البيانات، كما يمكنك تصور بياناتك في دفتر الملاحظات نفسه.

طريقة استخدام .NET لدفاتر ملاحظات Apache Spark

عند إنشاء دفتر ملاحظات جديد، بإمكانك اختيار نواة اللغة التي ترغب في التعبير عن منطق عملك. يتوفر دعم Kernel لعدة لغات، بما في ذلك لغة C#‎.

لاستخدام .NET لـ Apache Spark في دفتر ملاحظات Azure Synapse Analytics، حدد .NET Spark (C#) كنواة وأرفق دفتر الملاحظات بتجمع Apache Spark بدون خادم موجود.

يستند دفتر ملاحظات .NET Spark إلى تجارب .NET التفاعلية ويوفر تجارب C# تفاعلية مع القدرة على استخدام .NET لـ Spark خارج الصندوق مع متغير spark جلسة Spark المحدد مسبقًا.

تثبيت حزم NuGet في دفاترِ الملاحظات

بإمكانك تثبيت حزم NuGet التي تختارها في دفتر الملاحظات باستخدام #r nuget الأمر السحري قبل اسم حزمة NuGet. يُوضح الرسم التخطيطي العملية:

Screenshot that shows using #r to install a Spark .NET notebook NuGet package

لمعرفة المزيدِ حول كيفية العمل مع حزم NuGet في دفاتر الملاحظات، راجع وثائق .NET Interactive.

ميزات .NET لـ Apache Spark C# kernel

تتوفر الميزات التالية عند استخدام .NET لـ Apache Spark في دفترِ ملاحظات Azure Synapse Analytics:

  • لغة تمييز النص التشعبي التعريفية: إنشاء إخراج من الخلايا باستخدام بناء جملة HTML، مثل الرؤوس والقوائم ذات التعداد النقطي وحتى عرض الصور.
  • عبارات C# البسيطة (مثل التعيينات والطباعة إلى وحدة التحكم وطرح الاستثناءاتِ وما إلى ذلك).
  • كتل التعليمات البرمجية C# متعددةِ الأسطر (مثل عبارات if والحلقات foreach وتعريفات الفئة وما إلى ذلك).
  • الوصول إلى مكتبةِ C# القياسية (مثل النظام وLINQ وعدادات وما إلى ذلك).
  • دعم ميزاتِ اللغة C# 8.0.
  • spark كمتغير محدد مسبقًا لمنحك حق الوصول إلى جلسة Apache Spark.
  • دعم تعريف الدالات المعرفة من قبل المستخدم .NET التي يُمكن تشغيلها داخل Apache Spark. نُوصي بكتابة واستدعاء UDFs في .NET لبيئات Apache Spark Interactive لمعرفة كيفية استخدام UDFs في .NET لتجارب Apache Spark Interactive.
  • دعم تصور الإخراج من مهام Spark باستخدام مخططات مختلفة (مثل الخط أو الشريط أو المدرج التكراري) والتخطيطات (مثل مفردة ومتناسلة وما إلى ذلك) باستخدام XPlot.Plotly المكتبة.
  • القدرة على تضمين حزم NuGet في دفتر ملاحظات C#‎.

استكشاف الأخطاء وإصلاحها

DotNetRunner: null / Futures timeout في تشغيل تعريف مهمة Synapse Spark

تتطلب Microsoft.Spark تعريفات مهمة Synapse Spark على Spark Pools باستخدام Spark 2.4 1.0.0. امسح الدلائل bin وobj، وانشر المشروع باستخدام 1.0.0.

OutOfMemoryError: مساحة كومة الذاكرة المؤقتة java في org.apache.spark

يستخدم Dotnet Spark 1.0.0 بنية تتبع أخطاء مختلفة عن 1.1.1+. سيتعين عليك استخدام 1.0.0 للإصدار المنشور و1.1.1+ لتصحيح الأخطاء المحلي.

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