استكشاف أخطاء موصل Azure Cosmos DB في Azure Data Factory و Azure Synapse وإصلاحها
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توفر هذه المقالة اقتراحات لاستكشاف المشكلات الشائعة وإصلاحها مع Azure Cosmos DB وAzure Cosmos DB لموصلات NoSQL في Azure Data Factory وAzure Synapse.
رسالة الخطأ: حجم الطلب كبير جداً
الأعراض: عند نسخ البيانات إلى Azure Cosmos DB مع حجم دُفعة كتابة افتراضية، تتلقى الخطأ التالي:
Request size is too large.
السبب: Azure Cosmos DB يحد من حجم طلب واحد إلى 2 ميجابايت. الصيغة هي حجم الطلب = حجم دفعة كتابة * حجم المستند الواحد. إذا كان حجم المستند كبيراً، سيؤدي السلوك الافتراضي إلى حجم طلب كبير جداً.
الحل:
يمكنك ضبط حجم دفُعة الكتابة. في متلقي نشاط النسخ، قم بتقليل قيمة حجم دفعة الكتابة (القيمة الافتراضية هي 10000).
إذا كان تقليل قيمة حجم دفعة الكتابة إلى 1 لا يزال لا يعمل، فقم بتغيير Azure Cosmos DB SQL API من V2 إلى V3. لإكمال هذا التكوين، لديك خياران:- الخيار 1: تغيير نوع المصادقة إلى كيان الخدمة أو الهوية المدارة المعينة من قبل النظام أو الهوية المدارة المعينة من قبل المستخدم.
- الخيار 2: إذا كنت لا تزال ترغب في استخدام مصادقة مفتاح الحساب، فاتبع الخطوات التالية:
إنشاء Azure Cosmos DB لخدمة NoSQL المرتبطة.
تحديث الخدمة المرتبطة بالقالب التالي.
{ "name": "<CosmosDbV3>", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "annotations": [], "type": "CosmosDb", "typeProperties": { "useV3": true, "accountEndpoint": "<account endpoint>", "database": "<database name>", "accountKey": { "type": "SecureString", "value": "<account key>" } } } }
رسالة خطأ: انتهاك قيود الفهرس الفريد
الأعراض: عند نسخ البيانات إلى Azure Cosmos DB، تتلقى الخطأ التالي:
Message=Partition range id 0 | Failed to import mini-batch. Exception was Message: {"Errors":["Encountered exception while executing function. Exception = Error: {\"Errors\":[\"Unique index constraint violation.\"]}...
السبب: هناك سببان محتملان:
- السبب 1: إذا كنت تستخدم إدراج كطريقة الكتابة، يعني هذا الخطأ أن بيانات المصدر تحتوي على صفوف أو كائنات ذات نفس المعرف.
- السبب 2: إذا كنت تستخدم Upsert كطريقة الكتابة وتعيين مفتاح فريد آخر إلى الحاوية، يعني هذا الخطأ أن بيانات المصدر تحتوي على صفوف أو كائنات ذات معرفات مختلفة ولكن نفس القيمة للمفتاح الفريد المُعرف.
التحليل:
- بالنسبة إلى السبب 1، قم بتعيين Upsert كطريقة الكتابة.
- للسبب 2، تأكد من أن كل مستند له قيمة مختلفة للمفتاح الفريد المعرف.
رسالة الخطأ: معدل الطلب كبير
الأعراض: عند نسخ البيانات إلى Azure Cosmos DB، تتلقى الخطأ التالي:
Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}
السبب: عدد وحدات الطلب المستخدمة (RUs) أكبر من وحدات RUs المتوفرة المكونة في Azure Cosmos DB. لمعرفة كيفية حساب Azure Cosmos DB لوحدات RUs، راجع وحدات الطلب في Azure Cosmos DB.
الحل: حاول أي من الحلين التاليين:
- زيادة عدد وحدات RUs للحاوية إلى قيمة أكبر في Azure Cosmos DB. سيؤدي هذا الحل إلى تحسين أداء نشاط النسخ، ولكنه سيتكبد المزيد من التكلفة في Azure Cosmos DB.
- إنقاص writeBatchSize إلى قيمة أقل، مثل 1000، وتقليل parallelCopies إلى قيمة أقل، مثل 1. سيؤدي هذا الحل إلى تقليل أداء تشغيل النسخ، ولكنه لن يتحمل المزيد من التكلفة في Azure Cosmos DB.
الأعمدة المفقودة في تعيين الأعمدة
الأعراض: عند استيراد مخطط لـ Azure Cosmos DB لتعيين العمود، تكون بعض الأعمدة مفقودة.
السبب: يستنتج Azure Data Factory والبنية الأساسية Synapse المخطط من أول 10 مستندات لـ Azure Cosmos DB. إذا كانت بعض أعمدة المستندات أو خصائصها لا تحتوي على قيم، فلن يتم الكشف عن المخطط وبالتالي لا يتم عرضه.
الدقة: يمكنك ضبط الاستعلام كما هو موضح في التعليمات البرمجية التالية لفرض قيم العمود ليتم عرضها في مجموعة النتائج مع القيم الفارغة. افترض أن العمود مستحيل مفقود في المستندات 10 الأولى). بدلاً من ذلك، يمكنك إضافة العمود للتعيين يدوياً.
select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
رسالة الخطأ: GuidRepresentation للقارئ هو CSharpLegacy
الأعراض: عند نسخ البيانات من Azure Cosmos DB MongoAPI أو MongoDB مع حقل المُعرف الفريد عالمياً (UUID)، تتلقى الخطأ التالي:
Failed to read data via MongoDB client., Source=Microsoft.DataTransfer.Runtime.MongoDbV2Connector,Type=System.FormatException, Message=The GuidRepresentation for the reader is CSharpLegacy which requires the binary sub type to be UuidLegacy not UuidStandard.,Source=MongoDB.Bson,’“,
السبب: هناك طريقتان لتمثيل UUID في JSON ثنائي (BSON): UuidStardard و UuidLegacy. بشكل افتراضي، يتم استخدام UuidLegacy لقراءة البيانات. سوف تتلقى خطأ إذا كانت بيانات UUID في MongoDB هي UuidStandard.
الدقة: في سلسلة اتصال MongoDB، أضف الخيار uuidRepresentation=standard. لمزيد من المعلومات، انظر سلسلة موصل MongoDB.
رمز الخطأ: CosmosDbSqlApiOperationFailed
الرسالة:
CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.
السبب: مشكلة في عملية CosmosDbSqlApi. ينطبق هذا على موصل Azure Cosmos DB ل NoSQL على وجه التحديد.
التوصية: للتحقق من تفاصيل الخطأ، ارجع إلى مستند مساعدة Azure Cosmos DB. لمزيد من المساعدة، اتصل بفريق Azure Cosmos DB.
رمز الخطأ: CosmosDbSqlApiPartitionKeyExceedStorage
الرسالة:
The size of data each logical partition can store is limited, current partitioning design and workload failed to store more than the allowed amount of data for a given partition key value.
السبب: حجم البيانات لكل قسم منطقي محدود، ووصل مفتاح القسم إلى الحجم الأقصى للقسم المنطقي.
التوصية: تحقق من تصميم قسم Azure Cosmos DB الخاص بك. للمزيد من المعلومات، راجع الأقسام المنطقية.
المحتوى ذو الصلة
لمزيد من تعليمات استكشاف الأخطاء وإصلاحها، جرب هذه الموارد: