Problembehandlung für den Azure Cosmos DB-Connector in Azure Data Factory und Azure Synapse
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Dieser Artikel enthält Vorschläge zur Behebung häufiger Probleme mit Azure Cosmos DB- und Azure Cosmos DB for NoSQL-Connectors in Azure Data Factory und Azure Synapse.
Fehlermeldung: Anforderung ist zu groß.
Symptome: Wenn Sie Daten in Azure Cosmos DB mit einer Standardgröße für Schreibbatches kopieren, erhalten Sie den folgenden Fehler:
Request size is too large.
Ursache: Azure Cosmos DB schränkt die Größe einer einzelnen Anforderung auf 2 MB ein. Die Formel lautet: Anforderungsgröße = Einzeldokumentgröße * Schreibbatchgröße. Wenn Ihr Dokument zu groß ist, ist beim Standardverhalten auch die Anforderung zu groß.
Lösung:
Sie können die Batchgröße für Schreibvorgänge optimieren. Reduzieren Sie in der Senke der Kopieraktivität den Wert für die Schreibbatchgröße (Standardwert ist „10.000“).
Wenn das Reduzieren des Werts für die Schreibbatchgröße auf 1 immer noch nicht funktioniert, ändern Sie Ihre Azure Cosmos DB-SQL-API von V2 in V3. Für diese Konfiguration haben Sie zwei Optionen:- Option 1: Ändern Sie Ihren Authentifizierungstyp in Dienstprinzipal, eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität.
- Option 2: Wenn Sie weiterhin die Kontoschlüsselauthentifizierung verwenden möchten, führen Sie die folgenden Schritte aus:
Erstellen Sie einen verknüpften Azure Cosmos DB for NoSQL-Dienst.
Aktualisieren Sie den verknüpften Dienst mit der folgenden Vorlage.
{ "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>" } } } }
Fehlermeldung: Einschränkungsverletzung für eindeutigen Index
Symptome: Wenn Sie Daten in Azure Cosmos DB kopieren, erhalten Sie den folgenden Fehler:
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.\"]}...
Ursache: Es gibt zwei mögliche Ursachen:
- Ursache 1: Wenn Sie Einfügen als Schreibverhalten verwenden, bedeutet dieser Fehler, dass Ihre Quelldaten Zeilen oder Objekte mit der gleichen ID enthalten.
- Ursache 2: Wenn Sie Upsert als Schreibverhalten verwenden und einen anderen eindeutigen Schlüssel für den Container festlegen, bedeutet dieser Fehler, dass Ihre Quelldaten über Zeilen oder Objekte mit unterschiedlichen IDs verfügen, aber für den definierten eindeutigen Schlüssel den gleichen Wert aufweisen.
Lösung:
- Legen Sie für Ursache 1 die Option Upsert als Schreibverhalten fest.
- Stellen Sie für Ursache 2 sicher, dass jedes Dokument über einen anderen Wert für den definierten eindeutigen Schlüssel verfügt.
Fehlermeldung: Anforderungsrate ist hoch
Symptome: Wenn Sie Daten in Azure Cosmos DB kopieren, erhalten Sie den folgenden Fehler:
Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}
Ursache: Die Anzahl der verwendeten Anforderungseinheiten (Request Units, RUs) ist größer als die verfügbaren RUs, die in Azure Cosmos DB konfiguriert sind. Informationen dazu, wie Azure Cosmos DB RUs berechnet, finden Sie unter Anforderungseinheiten in Azure Cosmos DB.
Lösung: Versuchen Sie es mit einer der beiden folgenden Lösungen:
- Legen Sie die Anzahl der Container-RUs in Azure Cosmos DB auf einen größeren Wert fest. Mit dieser Lösung wird die Leistung der Kopieraktivität verbessert, aber es fallen Mehrkosten in Azure Cosmos DB an.
- Legen Sie writeBatchSize auf einen niedrigeren Wert (z. B. auf 1.000) fest, und verringern Sie den Wert von parallelCopies (z. B. auf 1). Mit dieser Lösung wird die Leistung der Kopierausführung verringert, aber es fallen keine Mehrkosten in Azure Cosmos DB an.
Fehlenden Spalte in Spaltenzuordnung
Symptome: Beim Importieren eines Schemas für Azure Cosmos DB für die Spaltenzuordnung fehlen einige Spalten.
Ursache: Azure Data Factory- und Synapse-Pipelines leiten das Schema von den ersten 10 Azure Cosmos DB-Dokumenten ab. Wenn einige Dokumentspalten oder -eigenschaften keine Werte enthalten, wird das Schema nicht erkannt und folglich nicht angezeigt.
Lösung: Sie können die Abfrage wie im folgenden Code gezeigt optimieren, um zu erzwingen, dass die Spaltenwerte im Resultset mit leeren Werten angezeigt werden. Nehmen Sie an, dass die Spalte impossible in den ersten zehn Dokumenten fehlt. Alternativ können Sie die Spalte auch manuell für die Zuordnung hinzufügen.
select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
Fehlermeldung: GuidRepresentation für den Reader ist CSharpLegacy
Symptome: Wenn Sie Daten aus Azure Cosmos DB MongoAPI oder MongoDB mit dem UUID-Feld (Universally Unique Identifier) kopieren, erhalten Sie den folgenden Fehler:
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,’“,
Ursache: Es gibt zwei Möglichkeiten, die UUID in BSON (Binary JSON) darzustellen: UuidStardard und UuidLegacy. Standardmäßig wird UuidLegacy zum Lesen von Daten verwendet. Sie erhalten einen Fehler, wenn für Ihre UUID-Daten in MongoDB UuidStandard festgelegt ist.
Lösung: Fügen Sie der MongoDB-Verbindungszeichenfolge die Option uuidRepresentation=standard hinzu. Weitere Informationen finden Sie im Artikel zur MongoDB-Verbindungszeichenfolge.
Fehlercode: CosmosDbSqlApiOperationFailed
Meldung:
CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.
Ursache: Beim CosmosDbSqlApi-Vorgang ist ein Problem aufgetreten. Dies gilt insbesondere für den Azure Cosmos DB for NoSQL-Connector.
Empfehlung: Zum Überprüfen der Fehlerdetails lesen Sie das Azure Cosmos DB-Hilfedokument. Um weitere Unterstützung zu erhalten, nehmen Sie Kontakt mit dem Azure Cosmos DB-Team auf.
Fehlercode: CosmosDbSqlApiPartitionKeyExceedStorage
Meldung:
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.
Ursache: Die Datengröße jeder logischen Partition ist begrenzt, und der Partitionsschlüssel erreicht die maximale Größe Ihrer logischen Partition.
Empfehlung: Überprüfen Sie Ihr Azure Cosmos DB-Partitionsdesign. Weitere Informationen finden Sie unter Logische Typen.
Zugehöriger Inhalt
Weitere Informationen zur Problembehandlung finden Sie in diesen Ressourcen: