استكشاف الأخطاء المتعلقة بموصل تنسيق Parquet في Azure Data Factory وAzure Synapse وإصلاحها
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
تقدم هذه المقالة اقتراحات لاستكشاف المشكلات الشائعة المتعلقة بموصل Parquet في Azure Data Factory وAzure Synapse وإصلاحها.
رمز الخطأ: ParquetJavaInvocationException
الرسالة:
An error occurred when invoking java, message: %javaException;.
الأسباب والتوصيات: قد تؤدي الأسباب المختلفة إلى حدوث هذا الخطأ. تحقق أدناه قائمة لتحليل السبب المحتمل، والتوصية ذات الصلة.
تحليل السبب التوصية عندما تحتوي رسالة الخطأ على السلاسل "java.lang.OutOfMemory"، و"Java heap space"، و"doubleCapacity"، فإنه عادةً ما يتعلق الأمر بمشكلة إدارة ذاكرة في إصدار قديم من وقت تشغيل التكامل. إذا كنت تستخدم وقت تشغيل التكامل (IR) المستضاف ذاتياً وكان الإصدار أقدم من 3.20.7159.1، نوصيك بالترقية إلى أحدث إصدار. عندما تحتوي رسالة الخطأ على سلسلة "java.lang.OutOfMemory"، فإن وقت تشغيل التكامل لا يحتوي على موارد كافية لمعالجة الملفات. تقييد عمليات التشغيل المتزامن في وقت تشغيل التكامل. بالنسبة إلى وقت تشغيل التكامل (IR) المستضاف ذاتياً، قم بالترقية إلى جهاز قوي بذاكرة تساوي 8 جيجابايت أو أكثر. عندما تحتوي رسالة الخطأ على السلسلة "NullPointerReference"، فقد يكون خطأً مؤقتاً. يُرجى إعادة محاولة تنفيذ العملية. إذا استمرت المشكلة، يمكنك الاتصال بالدعم.
رمز الخطأ: ParquetInvalidFile
الرسالة:
File is not a valid Parquet file.
السبب: هذه مشكلة ملف Parquet.
التوصية: تحقق لمعرفة ما إذا كان الإدخال هو ملف Parquet صالح.
رمز الخطأ: ParquetNotSupportedType
الرسالة:
Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.
السبب: تنسيق Parquet غير مدعوم في مسارات تدفق Azure Data Factory وSynapse.
التوصية: تحقق مرة أخرى من بيانات المصدر بالانتقال إلى تنسيقات الملفات وبرامج ترميز الضغط المدعومة بواسطة نشاط النسخ.
رمز الخطأ: ParquetMissedDecimalPrecisionScale
الرسالة:
Decimal Precision or Scale information is not found in schema for column: %column;.
السبب: تم تحليل دقة الرقم والمقياس، ولكن لم يتم تقديم مثل هذه المعلومات.
التوصية: المصدر لا يُرجع معلومات الدقة والمقياس الصحيحة. تحقق من عمود المشكلة للحصول على المعلومات.
رمز الخطأ: ParquetInvalidDecimalPrecisionScale
الرسالة:
Invalid Decimal Precision or Scale. Precision: %precision; Scale: %scale;.
السبب: المخطط غير صالح.
التوصية: تحقق من عمود المشكلة من أجل الدقة والمقياس.
رمز الخطأ: ParquetColumnNotFound
الرسالة:
Column %column; does not exist in Parquet file.
السبب: مخطط المصدر غير متطابق مع مخطط المتلقي.
التوصية: تحقق من التعيينات في النشاط. تأكد من أنه يمكن تعيين العمود المصدر إلى عمود المتلقي الصحيح.
رمز الخطأ: ParquetInvalidDataFormat
الرسالة:
Incorrect format of %srcValue; for converting to %dstType;.
السبب: لا يمكن تحويل البيانات إلى النوع المحدد في mappings.source.
التوصية: تحقق مرة أخرى من البيانات المصدر أو حدد نوع البيانات الصحيح لهذا العمود في تعيين عمود نشاط النسخ. لمزيد من المعلومات، راجع تنسيقات الملفات وبرامج ترميز الضغط المدعومة بواسطة نشاط النسخ.
رمز الخطأ: ParquetDataCountNotMatchColumnCount
الرسالة:
The data count in a row '%sourceColumnCount;' does not match the column count '%sinkColumnCount;' in given schema.
السبب: عدم وجود تطابق بين عدد أعمدة المصدر وعدد أعمدة المتلقي.
التوصية: تحقق جيداً للتأكد من أن عدد أعمدة المصدر هو نفسه عدد أعمدة المتلقي في "التعيين".
رمز الخطأ: ParquetDataTypeNotMatchColumnType
الرسالة:
The data type %srcType; is not match given column type %dstType; at column '%columnIndex;'.
السبب: لا يمكن تحويل البيانات من المصدر إلى النوع المحدد في المتلقي.
التوصية: حدد نوعاً صحيحاً في mapping.sink.
رمز الخطأ: ParquetBridgeInvalidData
الرسالة:
%message;
السبب: قيمة البيانات تجاوزت الحد.
توصية : أعد العملية. إذا استمرت المشكلة، فاتصل بنا.
رمز الخطأ: ParquetUnsupportedInterpretation
الرسالة:
The given interpretation '%interpretation;' of Parquet format is not supported.
السبب: هذا السيناريو غير مدعوم.
التوصية: إن "ParquetInterpretFor" لا ينبغي أن يكون 'sparkSql'.
رمز الخطأ: ParquetUnsupportFileLevelCompressionOption
الرسالة:
File level compression is not supported for Parquet.
السبب: هذا السيناريو غير مدعوم.
التوصية: أزل "CompressionType" في البيانات الأساسية.
رمز الخطأ: UserErrorJniException
الرسالة:
Cannot create JVM: JNI return code [-6][JNI call failed: Invalid arguments.]
السبب: لا يمكن إنشاء جهاز Java الظاهري (JVM) لأنه تم تعيين بعض الوسائط (العمومية) غير القانونية.
التوصية: قم بتسجيل الدخول إلى الجهاز الذي يستضيف كل عقدة من وقت تشغيل التكامل المستضاف ذاتياً. تحقق للتأكد من تعيين متغير النظام بشكل صحيح، على النحو التالي:
_JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G
. أعد تشغيل جميع عقد وقت تشغيل التكامل، ثم أعد تشغيل مسار التدفقات.
تجاوز سعة حسابي
الأعراض: ظهرت رسالة خطأ عندما قمت بنسخ ملفات Parquet:
Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common
السبب: حالياً يتم فقط دعم العلامة العشرية للدقة <= 38 وطول الجزء الصحيح <= 20 عند نسخ الملفات من Oracle إلى Parquet.
الحل: كحل بديل، يمكنك تحويل أي أعمدة بها هذه المشكلة إلى VARCHAR2.
لا توجد قائمة تعداد ثابتة
الأعراض: ظهرت رسالة خطأ عندما قمت بنسخ البيانات إلى تنسيق Parquet:
java.lang.IllegalArgumentException:field ended by ';'
، أو:java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test
.السبب:
قد يكون سبب المشكلة هو المسافات الفارغة أو الأحرف الخاصة غير المدعومة (مثل {}()\n\t=) في اسم العمود، لأن Parquet لا يدعم هذا التنسيق.
على سبيل المثال، اسم عمود مثل contoso(test) سيحلل النوع الموجود بين قوسين من الرمز
Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");
. تم طرح الخطأ لأنه لا يوجد مثل هذا النوع "test".للتحقق من الأنواع المدعومة، انتقل إلى GitHub apache/parquet-mr site.
التحليل:
تحقق مرة أخرى لمعرفة ما إذا كان:
- هناك مسافات فارغة في اسم عمود المتلقي.
- يتم استخدام الصف الأول الذي يحتوي على مسافات فارغة كاسم العمود.
- النوع OriginalType مدعوم. حاول تجنب استخدام هذه الأحرف الخاصة:
,;{}()\n\t=
.
رمز الخطأ: ParquetDateTimeExceedLimit
الرسالة:
The Ticks value '%ticks;' for the datetime column must be between valid datetime ticks range -621355968000000000 and 2534022144000000000.
السبب: إذا كانت قيمة التاريخ والوقت هي "0001-01-01 00:00:00"، فقد يرجع ذلك إلى الاختلاف بين التقويم اليوليوسي والتقويم الميلادي. لمزيد من التفاصيل، راجع الفرق بين تواريخ التقويم اليوليوسي والتاريخ الميلادي البروليبتي.
الحل: تحقق من قيمة علامات التجزئة وتجنب استخدام قيمة التاريخ والوقت "0001-01-01 00:00:00".
رمز الخطأ: ParquetInvalidColumnName
الرسالة:
The column name is invalid. Column name cannot contain these character:[,;{}()\n\t=]
السبب: يحتوي اسم العمود على أحرف غير صالحة.
الحل: قم بإضافة أو تعديل تعيين العمود لجعل اسم عمود المتلقي صالحاً.
يستخرج الملف الذي تم إنشاؤه بواسطة نشاط نسخ البيانات جدولاً يحتوي على عمود ثنائي متغير (بحد أقصى)
الأعراض: يستخرج ملف Parquet الذي تم إنشاؤه بواسطة نشاط نسخ البيانات جدولاً يحتوي على عمود ثنائي متغير (بحد أقصى).
السبب: هذه المشكلة بسبب خطأ مكتبة Parquet-mr عند قراءة عمود كبير.
الدقة: حاول إنشاء ملفات أصغر (بحجم < 1 جيجا) بحد 1000 صف لكل ملف.
المحتوى ذو الصلة
لمزيد من تعليمات استكشاف الأخطاء وإصلاحها، جرب هذه الموارد: