تنسيق JSON في مصنع بيانات Azure وتحليلات Azure Synapse

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

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

اتبع هذه المقالة عندما تريد تحليل ملفات Parquet أو كتابة البيانات بتنسيق Parquet.

يتم اعتماد تنسيق JSON للموصلات التالية:

للحصول على قائمة بالميزات المدعومة لجميع الموصلات المتاحة، قم بزيارة المقالة نظرة عامة على الموصلات.

استخدام وقت تشغيل التكامل المستضاف ذاتياً

هام

بالنسبة للنسخة المُمكّنة بواسطة وقت تشغيل التكامل المستضاف ذاتياً، على سبيل المثال: بين مخازن البيانات المحلية والسحابية، إذا كنت لا تنسخ ملفات باركيه كما هي، فأنت بحاجة إلى تثبيت 64 بت JRE 8 (Java Runtime Environment) أو OpenJDK على جهاز IR الخاص بك. تحقق من الفقرة التالية مع مزيد من التفاصيل.

بالنسبة للنسخة التي تعمل على وقت تشغيل التكامل المستضاف ذاتياً مع تسلسل/إلغاء تسلسل ملف Parquet، تحدد الخدمة وقت تشغيل Java عن طريق التحقق أولاً من السجل (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) لـ JRE، إذا لم يتم العثور عليه، وثانياً تتحقق من متغير النظام JAVA_HOME لـ OpenJDK.

  • لاستخدام JRE: يتطلب IR 64 بت JRE 64 بت. يمكنك العثور عليه من هنا.
  • لاستخدام OpenJDK: معتمد منذ إصدار IR 3.13. قم بتجميع jvm.dl مع جميع التجميعات الأخرى المطلوبة من OpenJDK في آلة وقت تشغيل التكامل المستضاف ذاتيًا، وقم بتعيين متغير بيئة النظام JAVA_HOME وفقًا لذلك، ثم إعادة تشغيل IR المستضاف ذاتيًا لتصبح سارية المفعول على الفور.

تلميح

إذا قمت بنسخ البيانات من /إلى تنسيق باركيه باستخدام وقت تشغيل التكامل المستضاف ذاتياً وظهرت رسالة خطأ تقول "حدث خطأ عند استدعاء جافا، الرسالة: java.lang.OutOfMemoryError:Java heap space"، يمكنك إضافة متغير بيئة _JAVA_OPTIONS في الجهاز الذي يستضيف وقت تشغيل التكامل المستضاف ذاتياً لضبط الحد الأدنى / الأقصى لحجم كومة الذاكرة المؤقتة لـ JVM لتمكين هذه النسخة، ثم إعادة تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية.

تعيين حجم كومة الذاكرة المؤقتة JVM على وقت تشغيل التكامل المستضاف ذاتياً

كمثال: تعيين متغير _JAVA_OPTIONS مع قيمة -Xms256m -Xmx16g. تحدد العلامة Xms تجمع تخصيص الذاكرة الأولى لآلة جافا الافتراضية (JVM)، بينما تحدد Xmx مجموعة تخصيص الذاكرة القصوى. هذا يعني أن JVM ستبدأ بمقدار Xms من الذاكرة وستكون قادرة على استخدام الحد الأقصى من الذاكرة بمقدار Xmx. تستخدم الخدمة الحد الأدنى 64 ميجابايت 1 جيجا بايت كحد أقصى، بشكل افتراضي.

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات. يوفر هذا القسم قائمة بالخصائص التي تدعمها مجموعة بيانات Parquet.

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى Parquet. ‏‏نعم‬
مكان إعدادات الموقع للملف (الملفات). يحتوي كل موصل يستند إلى ملف على نوع الموقع الخاص به وخصائص مدعومة ضمن location. راجع التفاصيل الواردة في مقالة الموصل -> قسم خصائص مجموعة البيانات. ‏‏نعم‬
compressionCodec برنامج ترميز الضغط لاستخدامها عند الكتابة إلى ملفات Parquet. عند القراءة من ملفات Parquet تحدد Data Factories تلقائياً برنامج ضغط الوسائط وفكها استناداً إلى بيانات تعريف الملف.
الأنواع المعتمدة هي none، وgzlib، وsnappy (افتراضي)، وlzo. ملاحظة: حالياً لا يدعم نشاط النسخ LZO عند قراءة/كتابة ملفات Parquet.
لا

إشعار

المساحة البيضاء في اسم العمود غير معتمدة لملفات Parquet.

وفيما يلي مثال على مجموعة بيانات Parquet على Azure Blob Storage:

{
    "name": "ParquetDataset",
    "properties": {
        "type": "Parquet",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "compressionCodec": "snappy"
        }
    }
}

انسخ خصائص النشاط

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر REST ومتلقي نظام الملفات.

باركيه كمصدر

يتم دعم الخصائص التالية في جزء نسخ النشاط *Source*.

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع لمصدر نشاط النسخ على: ParquetSource. ‏‏نعم‬
إعدادات المخزن lمجموعة من الخصائص حول كيفية قراءة البيانات من مخزن بيانات. يحتوي كل موصل يستند إلى ملف إعدادات القراءة المدعومة الخاصة به ضمن storeSettings. راجع التفاصيل في مقالة الموصل -> قسم خصائص نسخ النشاط. لا

باركيه كمتلقي

الخصائص التالية مدعومة في نشاط النسخ * lمتلقي * القسم.

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى ParquetSink. ‏‏نعم‬
إعدادات التنسيقات مجموعة من الخصائص. راجع جدول إعدادات كتابة Parquet أدناه. لا
إعدادات المخزن مجموعة من الخصائص حول كيفية كتابة البيانات إلى مخزن بيانات. يحتوي كل موصل يستند إلى ملف إعدادات الكتابة المعتمدة الخاصة به ضمن storeSettings. راجع التفاصيل في مقالة الموصل -> قسم خصائص نسخ النشاط. لا

إعدادات كتابة باركيه المعتمدة تحت formatSettings:

الخاصية الوصف مطلوب
النوع يجب تعيين نوع formatSettings إلى ParquetWriteSettings. ‏‏نعم‬
maxRowsPerFile عند كتابة البيانات في مجلد، يمكنك اختيار الكتابة إلى ملفات متعددة وتحديد الصفوف القصوى لكل ملف. لا
fileNamePrefix قابل للتطبيق عند تكوين maxRowsPerFile.
حدد بادئة اسم الملف عند كتابة البيانات إلى ملفات متعددة، مما أدى إلى هذا النمط: <fileNamePrefix>_00000.<fileExtension>. إذا لم يتم تحديد، سيتم إنشاء بادئة اسم الملف تلقائياً. لا تنطبق هذه الخاصية عندما يكون المصدر مخزن مستند إلى ملف أو مخزن بيانات تمكين خيار القسم.
لا

تعيين خصائص تدفق البيانات

في تخطيط تدفقات البيانات، يمكنك القراءة والكتابة إلى تنسيق باركيه في مخازن البيانات التالية: تخزين Azure Blob ، Azure Data Lake Storage Gen1 ، Azure Data Lake Storage Gen2 و SFTP ، ويمكنك قراءة تنسيق الباركيه في Amazon S3 .

خصائص المصدر

يسرد الجدول أدناه الخصائص المعتمدة من مصدر json. يمكنك تحرير هذه الخصائص في علامة التبويب "Source options".

Name ‏‏الوصف مطلوب القيم المسموح بها خاصية البرنامج النصي لتدفق البيانات
Format يجب أن يكون التنسيق parquet yes parquet format
مسارات محرف البدل ستتم معالجة جميع الملفات المطابقة لمسار محرف البدل. يتجاوز المجلد ومسار الملف المحددين في مجموعة البيانات. no سلسلة[] wildcardPaths
مسار جذر التقسيم بالنسبة لبيانات الملف المقسمة، يمكنك إدخال مسار جذر القسم لقراءة المجلدات المقسمة كأعمدة no السلسلة‬ partitionRootPath
قائمة الملفات ما إذا كان المصدر يشير إلى ملف نصي يسرد الملفات المراد معالجتها no true أو false قائمة الملفات
عمود لتخزين اسم الملف إنشاء عمود جديد باسم الملف المصدر ومساره no السلسلة‬ rowUrlColumn
بعد الانتهاء احذف أو انقل الملفات بعد المعالجة. مسار الملف يبدأ من جذر الحاوية no حذف: true أو false
نقل: [<from>, <to>]
إزالة الملفات
نقل الملفات
التصفية حسب آخر تعديل اختيار تصفية الملفات استناداً إلى آخر مرة تم تبديلها no طابع زمني تم التعديل بعد ذلك
modifiedBefore
السماح بعدم العثور على أي ملفات إذا كان هذا صحيحاً، فلن يتم طرح خطأ إذا لم يتم العثور على ملفات no true أو false ignoreNoFilesFound

مثال المصدر

الصورة أدناه هي مثال على تكوين مصدر نص محدد في تعيين تدفقات البيانات.

مصدر باركيه

البرنامج النصي لتدفق البيانات المرتبط هو:

source(allowSchemaDrift: true,
    validateSchema: false,
    rowUrlColumn: 'fileName',
    format: 'parquet') ~> ParquetSource

خصائص المتلقّي

يسرد الجدول أدناه الخصائص المعتمدة من مصدر باركيه. يمكنك تحرير هذه الخصائص في علامة التبويب "Settings".

Name ‏‏الوصف مطلوب القيم المسموح بها خاصية البرنامج النصي لتدفق البيانات
Format يجب أن يكون التنسيق parquet yes parquet format
مسح المجلد إذا تم مسح المجلد الوجهة قبل الكتابة no true أو false اقتطاع
خيار اسم الملف تنسيق تسمية البيانات المكتوبة. بشكل افتراضي، ملف واحد لكل قسم بالتنسيق part-#####-tid-<guid> no النمط: سلسلة
لكل قسم: سلسلة[]
كبيانات في العمود: سلسلة
الإخراج إلى ملف واحد: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

مثال على المتلقي

الصورة أدناه هي مثال على تكوين مصدر نص محدد في تعيين تدفقات البيانات.

متلقي باركيه

البرنامج النصي لتدفق البيانات المرتبط هو:

ParquetSource sink(
    format: 'parquet',
    filePattern:'output[n].parquet',
    truncate: true,
    allowSchemaDrift: true,
    validateSchema: false,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> ParquetSink

دعم نوع البيانات

أنواع البيانات المعقدة (مثل MAP، LIST، STRUCT) معتمدة حالياً فقط في تدفقات البيانات، وليس في نشاط النسخ. لاستخدام أنواع معقدة في تدفق البيانات، لا تقم باستيراد مخطط الملف في مجموعة البيانات، تاركاً المخطط فارغاً في مجموعة البيانات. وبعد ذلك، في تحويل المصدر، قم باستيراد الإسقاط.