Delen via


Problemen met de Azure Cosmos DB-connector in Azure Data Factory en Azure Synapse oplossen

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Dit artikel bevat suggesties voor het oplossen van veelvoorkomende problemen met de Azure Cosmos DB- en Azure Cosmos DB for NoSQL-connectors in Azure Data Factory en Azure Synapse.

Foutbericht: Aanvraaggrootte is te groot

  • Symptomen: Wanneer u gegevens kopieert naar Azure Cosmos DB met een standaardgrootte voor schrijfbatches, wordt de volgende fout weergegeven: Request size is too large.

  • Oorzaak: Azure Cosmos DB beperkt de grootte van één aanvraag tot 2 MB. De formule is aanvraaggrootte = enkele documentgrootte * schrijfbatchgrootte. Als de documentgrootte groot is, resulteert het standaardgedrag in een aanvraaggrootte die te groot is.

  • Oplossing:
    U kunt de grootte van de schrijfbatch afstemmen. Verklein in de sink voor kopieeractiviteit de waarde voor de grootte van de schrijfbatch (de standaardwaarde is 10000).
    Als het verminderen van de grootte van de schrijfbatch naar 1 nog steeds niet werkt, wijzigt u uw Azure Cosmos DB SQL-API van V2 in V3. U hebt twee opties om deze configuratie te voltooien:

    • Optie 1: Wijzig uw verificatietype in een service-principal of door het systeem toegewezen beheerde identiteit of door de gebruiker toegewezen beheerde identiteit.
    • Optie 2: Als u nog steeds accountsleutelverificatie wilt gebruiken, voert u de volgende stappen uit:
      1. Maak een gekoppelde Azure Cosmos DB for NoSQL-service.

      2. Werk de gekoppelde service bij met de volgende sjabloon.

        {
          "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>"
              }
            }
          }
        }
        

Foutbericht: Schending van unieke indexbeperking

  • Symptomen: Wanneer u gegevens kopieert naar Azure Cosmos DB, wordt de volgende fout weergegeven:

    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.\"]}...

  • Oorzaak: Er zijn twee mogelijke oorzaken:

    • Oorzaak 1: Als u Invoegen als schrijfgedrag gebruikt, betekent deze fout dat uw brongegevens rijen of objecten met dezelfde id hebben.
    • Oorzaak 2: Als u Upsert gebruikt als schrijfgedrag en u een andere unieke sleutel instelt op de container, betekent deze fout dat uw brongegevens rijen of objecten met verschillende id's hebben, maar dezelfde waarde voor de gedefinieerde unieke sleutel.
  • Oplossing:

    • Voor oorzaak 1 stelt u Upsert in als schrijfgedrag.
    • Voor oorzaak 2 moet u ervoor zorgen dat elk document een andere waarde heeft voor de gedefinieerde unieke sleutel.

Foutbericht: Aanvraagsnelheid is groot

  • Symptomen: Wanneer u gegevens kopieert naar Azure Cosmos DB, wordt de volgende fout weergegeven:

    Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}

  • Oorzaak: Het aantal gebruikte aanvraageenheden (RU's) is groter dan de beschikbare RU's die zijn geconfigureerd in Azure Cosmos DB. Zie Aanvraageenheden in Azure Cosmos DB voor meer informatie over het berekenen van RU's in Azure Cosmos DB.

  • Oplossing: Probeer een van de volgende twee oplossingen:

    • Verhoog het aantal CONTAINER-RU's naar een hogere waarde in Azure Cosmos DB. Met deze oplossing worden de prestaties van de kopieeractiviteit verbeterd, maar er worden meer kosten in Rekening gebracht in Azure Cosmos DB.
    • Verlaag writeBatchSize naar een lagere waarde, zoals 1000, en verlaag parallelCopies naar een lagere waarde, zoals 1. Deze oplossing vermindert de prestaties van de kopieeruitvoering, maar er worden geen kosten meer in Rekening gebracht in Azure Cosmos DB.

Kolommen ontbreken in kolomtoewijzing

  • Symptomen: Wanneer u een schema voor Azure Cosmos DB importeert voor kolomtoewijzing, ontbreken sommige kolommen.

  • Oorzaak: Azure Data Factory- en Synapse-pijplijnen leiden het schema af van de eerste tien Azure Cosmos DB-documenten. Als sommige documentkolommen of -eigenschappen geen waarden bevatten, wordt het schema niet gedetecteerd en wordt het dus niet weergegeven.

  • Oplossing: U kunt de query afstemmen zoals wordt weergegeven in de volgende code om af te dwingen dat de kolomwaarden worden weergegeven in de resultatenset met lege waarden. Stel dat de onmogelijke kolom ontbreekt in de eerste 10 documenten. U kunt de kolom ook handmatig toevoegen voor toewijzing.

    select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
    

Foutbericht: De GuidRepresentation voor de lezer is CSharpLegacy

  • Symptomen: Wanneer u gegevens kopieert uit Azure Cosmos DB MongoAPI of MongoDB met het UUID-veld (Universally Unique Identifier), wordt de volgende fout weergegeven:

    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,’“,

  • Oorzaak: Er zijn twee manieren om de UUID in Binaire JSON (BSON): UuidStardard en UuidLegacy weer te geven. Standaard wordt UuidLegacy gebruikt om gegevens te lezen. U ontvangt een foutmelding als uw UUID-gegevens in MongoDB UuidStandard zijn.

  • Oplossing: Voeg in de MongoDB-verbindingsreeks de optie uuidRepresentation=standard toe. Zie MongoDB verbindingsreeks voor meer informatie.

Foutcode: CosmosDbSqlApiOperationFailed

  • Bericht: CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.

  • Oorzaak: Een probleem met de CosmosDbSqlApi-bewerking. Dit geldt specifiek voor de Azure Cosmos DB for NoSQL-connector.

  • Aanbeveling: Raadpleeg het Help-document van Azure Cosmos DB om de foutdetails te controleren. Neem voor meer hulp contact op met het Azure Cosmos DB-team.

Foutcode: CosmosDbSqlApiPartitionKeyExceedStorage

  • Bericht: 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.

  • Oorzaak: De gegevensgrootte van elke logische partitie is beperkt en de partitiesleutel heeft de maximale grootte van uw logische partitie bereikt.

  • Aanbeveling: Controleer het ontwerp van uw Azure Cosmos DB-partitie. Zie Logische partities voor meer informatie.

Voor meer hulp bij het oplossen van problemen kunt u de volgende bronnen proberen: