تحويل البيانات باستخدام نشاط Spark في Azure Data Factory و Synapse Analytics

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

Data Factory في Microsoft Fabric هو الجيل القادم من Azure Data Factory، مع بنية أبسط، وذكاء اصطناعي مدمج، وميزات جديدة. إذا كنت جديدا في تكامل البيانات، ابدأ مع Fabric Data Factory. يمكن لأعباء عمل ADF الحالية الترقية إلى Fabric للوصول إلى قدرات جديدة في علوم البيانات، والتحليلات اللحظية، والتقارير.

ينفذ نشاط Spark في مصنع بيانات و البنية الأساسية لبرنامج ربط العمليات التجارية بـ Synapse برنامج Spark على نظام مجموعة HDInsight الخاصة بك أو عند الطلب . تعتمد هذه المقالة على مقالة أنشطة تحويل البيانات، والتي تقدم نظرة عامة على تحويل البيانات وأنشطة التحويل المدعومة. عند استخدام خدمة Spark المرتبطة عند الطلب، تقوم الخدمة تلقائياً بإنشاء نظام مجموعة Spark لك في الوقت المناسب لمعالجة البيانات ثم تحذف نظام المجموعة بمجرد اكتمال المعالجة.

إضافة نشاط Spark إلى البنية الأساسية باستخدام واجهة المستخدم

لاستخدام نشاط Spark في البنية الأساسية، أكمل الخطوات التالية:

  1. ابحث عن Spark في جزء أنشطة البنية الأساسية، واسحب نشاط Spark إلى لوحة البنية الأساسية.

  2. حدد نشاط Spark الجديد على اللوحة إذا لم يكن محددًا بالفعل.

  3. حدد علامة التبويب HDI Cluster لتحديد أو إنشاء خدمة مرتبطة جديدة إلى مجموعة HDInsight التي سيتم استخدامها لتنفيذ نشاط Spark.

    يعرض واجهة المستخدم لنشاط Spark.

  4. اختر تبويب Script / Jar لاختيار أو إنشاء خدمة مرتبطة بالوظائف جديدة إلى حساب تخزين Azure الذي سيستضيف السكريبت الخاص بك. حدد مسارًا إلى الملف الذي سيتم تنفيذه هناك. يمكنك أيضًا تكوين التفاصيل المتقدمة بما في ذلك مستخدم وكيل وتكوين تصحيح الأخطاء والوسيطات ومعلمات تكوين Spark ليتم تمريرها إلى البرنامج النصي.

    يعرض واجهة المستخدم لعلامة التبويب Script / Jar لنشاط Spark.

خصائص نشاط Spark

هذا هو تعريف JSON عينة من نشاط Spark:

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

يصف الجدول التالي خصائص JSON المستخدمة في تعريف JSON:

الخاصية الوصف مطلوب
الاسم اسم النشاط في التدفق. ‏‏نعم‬
الوصف نص يصف ما يفعله النشاط. لا
النوع بالنسبة لنشاط Spark، يكون نوع النشاط HDInsightSpark. ‏‏نعم‬
linkedServiceName اسم خدمة HDInsight Spark Linked التي يعمل عليها برنامج Spark. للتعرف على هذه الخدمة المرتبطة، راجع مقالة خدمات الحوسبة المرتبطة. ‏‏نعم‬
SparkJobLinkedService الخدمة المرتبطة ب تخزين Azure التي تحتفظ بملف وظيفة Spark، والتبعيات، والسجلات. تدعم هنا فقط الخدمات المرتبطة مساحة تخزين Azure Blob وADLS Gen2 المرتبطة. إذا لم تقم بتحديد قيمة لهذه الخاصية، يتم استخدام التخزين المقترنة مع نظام المجموعة HDInsight. قيمة هذه الخاصية لا يمكن أن تكون إلا خدمة مرتبطة ب تخزين Azure. لا
rootPath الحاوية والمجلد في Azure Blob الذي يحتوي على ملف Spark. اسم الملف حساس لحالة الأحرف. راجع قسم بنية المجلد (القسم التالي) للحصول على تفاصيل حول بنية هذا المجلد. ‏‏نعم‬
entryFilePath المسار النسبي للمجلد جذر رمز/حزمة Spark. يجب أن يكون ملف الإدخال إما ملف Python أو ملف .jar. ‏‏نعم‬
className الفئة الرئيسية ل Java/Spark في التطبيق لا
الحجج قائمة وسيطات سطر الأوامر إلى برنامج Spark. لا
proxyUser حساب المستخدم للانتحال لتنفيذ برنامج Spark لا
sparkConfig حدد قيم خصائص Spark configuration المدرجة في الموضوع: Spark Configuration - خصائص التطبيق . لا
getDebugInfo يحدد متى يتم نسخ ملفات سجل Spark إلى مخزن Azure المستخدم في عنقود HDInsight (أو) المحدد بواسطة sparkJobLinkedService. القيم المسموح بها: بلا، دوماً، أو فشل. القيمة الافتراضية: بلا. لا

بنية المجلد

تعد وظائف Spark أكثر قابلية للتوسع من وظائف Pig/Apache Hive. بالنسبة لوظائف Spark، يمكنك توفير عدة تبعيات مثل حزم jar (الموضوعة في مسار Java CLASSPATH)، وملفات Python (الموضوعة على PYTHONPATH)، وأي ملفات أخرى.

أنشئ هيكل المجلدات التالي في تخزين Azure Blob المشار إليه من قبل الخدمة المرتبطة ب HDInsight. بعد ذلك، قم بتحميل الملفات التابعة إلى المجلدات الفرعية المناسبة في المجلد الجذر الذي يمثله entryFilePath. على سبيل المثال، رفع ملفات Python إلى مجلد pyFiles الفرعي وملفات jar إلى مجلد jars الفرعي في المجلد الجذر. عند وقت التشغيل، تتوقع الخدمة هيكل المجلدات التالي في تخزين Azure Blob:

المسار الوصف مطلوب نوع
. (جذر) المسار الجذر لوظيفة Spark في خدمة التخزين المرتبطة ‏‏نعم‬ مجلد
<معرّف المستخدم> المسار الذي يشير إلى ملف إدخال وظيفة Spark ‏‏نعم‬ الملف
./jars جميع الملفات الموجودة في هذا المجلد يتم رفعها ووضعها على مسار Java classpath الخاص بالمجموعة لا مجلد
ملفات ./pyFiles يتم تحميل جميع الملفات الموجودة ضمن هذا المجلد ووضعها في PYTHONPATH الخاص بنظام المجموعة لا مجلد
./files يتم تحميل جميع الملفات الموجودة ضمن هذا المجلد ووضعها على دليل المشغَّل لا مجلد
./archives جميع الملفات الموجودة تحت هذا المجلد غير مضغوطة لا مجلد
./logs المجلد الذي يحتوي على سجلات من نظام المجموعة Spark. لا مجلد

إليك مثالا على تخزين يحتوي على ملفي وظائف Spark في مساحة تخزين Azure Blob المشار إليهما بواسطة خدمة HDInsight المرتبطة به.

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

راجع المقالات التالية التي تشرح كيفية تحويل البيانات بطرق أخرى: