فهم الاختلافات بين تنسيقات بيانات U-SQL وSpark
هام
تم إيقاف Azure Data Lake Analytics في 29 فبراير 2024. تعرف على المزيد من خلال هذا الإعلان.
بالنسبة لتحليلات البيانات، يمكن لمؤسستك استخدام Azure Synapse Analytics أو Microsoft Fabric.
إذا كنت ترغب في استخدام Azure Databricks أو Azure HDInsight Spark، نوصي بترحيل بياناتك من Azure Data Lake Storage Gen1 إلى Azure Data Lake Storage Gen2.
بالإضافة إلى نقل ملفاتك، ستحتاج أيضا إلى جعل بياناتك، المخزنة في جداول U-SQL، قابلة للوصول إلى Spark.
نقل البيانات المخزنة في ملفات Azure Data Lake Storage Gen1
يمكن نقل البيانات المخزنة في الملفات بطرق مختلفة:
- اكتب مسار Azure Data Factory لنسخ البيانات من حساب Azure Data Lake Storage Gen1 إلى حساب Azure Data Lake Storage Gen2.
- اكتب مهمة Spark تقرأ البيانات من حساب Azure Data Lake Storage Gen1 وتكتبها في حساب Azure Data Lake Storage Gen2. استنادا إلى حالة الاستخدام الخاصة بك، قد تحتاج إلى كتابتها بتنسيق مختلف مثل Parquet إذا لم تكن بحاجة إلى الاحتفاظ بتنسيق الملف الأصلي.
نوصي بمراجعة المقالة ترقية حلول تحليلات البيانات الضخمة من Azure Data Lake Storage Gen1 إلى Azure Data Lake Storage Gen2
نقل البيانات المخزنة في جداول U-SQL
لا يفهم Spark جداول U-SQL. إذا كانت لديك بيانات مخزنة في جداول U-SQL، فستشغل مهمة U-SQL تستخرج بيانات الجدول وتحفظها بتنسيق يفهمه Spark. التنسيق الأنسب هو إنشاء مجموعة من ملفات Parquet باتباع تخطيط مجلد Hive metastore.
يمكن تحقيق الإخراج في U-SQL باستخدام مخرج Parquet المضمن واستخدام تقسيم الإخراج الديناميكي مع مجموعات الملفات لإنشاء مجلدات الأقسام. معالجة المزيد من الملفات أكثر من أي وقت مضى واستخدام Parquet يوفر مثالا على كيفية إنشاء مثل هذه البيانات الاستهلاكية Spark.
بعد هذا التحويل، يمكنك نسخ البيانات كما هو موضح في الفصل نقل البيانات المخزنة في ملفات Azure Data Lake Storage Gen1.
تحذيرات
دلالات البيانات عند نسخ الملفات، ستحدث النسخة على مستوى البايت. لذلك يجب أن تظهر نفس البيانات في حساب Azure Data Lake Storage Gen2. ومع ذلك، قد يفسر Spark بعض الأحرف بشكل مختلف. على سبيل المثال، قد يستخدم افتراضيا مختلفا لمحدد صف في ملف CSV. علاوة على ذلك، إذا كنت تقوم بنسخ البيانات المحرفة (من الجداول)، فقد يكون ل Parquet وSpark دقة ومقياس مختلفان لبعض القيم المحرفة (على سبيل المثال، عائمة) وقد يتعاملان مع القيم الخالية بشكل مختلف. على سبيل المثال، يحتوي U-SQL على دلالات C# للقيم الخالية، بينما يحتوي Spark على منطق ثلاثي القيم للقيم الخالية.
توفر جداول U-SQL لتنظيم البيانات (التقسيم) تقسيما على مستويين. المستوى الخارجي (
PARTITIONED BY
) حسب القيمة ويتم تعيينه في الغالب إلى نظام تقسيم Apache Hive/Spark باستخدام التسلسلات الهرمية للمجلدات. ستحتاج إلى التأكد من تعيين القيم الخالية إلى المجلد الصحيح. يقدم المستوى الداخلي (DISTRIBUTED BY
) في U-SQL أربعة أنظمة توزيع: الترتيب الدوري والنطاق والتجزئة والتجزئة المباشرة. تدعم جداول Hive/Spark تقسيم القيمة أو تقسيم التجزئة فقط، باستخدام دالة تجزئة مختلفة عن U-SQL. عند إخراج بيانات جدول U-SQL، من المحتمل أنك ستتمكن فقط من تعيين تقسيم القيمة ل Spark وقد تحتاج إلى إجراء مزيد من الضبط لتخطيط البيانات اعتمادا على استعلامات Spark النهائية.
الخطوات التالية
- فهم مفاهيم تعليمة Spark البرمجية لمطوري U-SQL
- ترقية حلول تحليلات البيانات الضخمة من Azure Data Lake Storage Gen1 إلى Azure Data Lake Storage Gen2
- .NET لـ Apache Spark
- تحويل البيانات باستخدام نشاط Spark في Azure Data Factory
- تحويل البيانات باستخدام نشاط Hadoop Hive في Azure Data Factory
- ما هو Apache Spark في Azure HDInsight