Rozwiązywanie problemów z łącznikiem usługi Azure Cosmos DB w Azure Data Factory i Azure Synapse

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Ten artykuł zawiera sugestie dotyczące rozwiązywania typowych problemów z łącznikami usług Azure Cosmos DB i Azure Cosmos DB (SQL API) w Azure Data Factory i Azure Synapse.

Komunikat o błędzie: Rozmiar żądania jest zbyt duży

  • Objawy: Podczas kopiowania danych do usługi Azure Cosmos DB z domyślnym rozmiarem partii zapisu jest wyświetlany następujący błąd:Request size is too large.

  • Przyczyna: usługa Azure Cosmos DB ogranicza rozmiar pojedynczego żądania do 2 MB. Formuła ma rozmiar żądania = rozmiar pojedynczego dokumentu * wsadowego zapisu. Jeśli rozmiar dokumentu jest duży, domyślne zachowanie spowoduje zbyt duży rozmiar żądania. Możesz dostosować rozmiar partii zapisu.

  • Rozwiązanie: W ujściu działania kopiowania zmniejsz wartość rozmiaru partii zapisu (wartość domyślna to 10000).

Komunikat o błędzie: Naruszenie ograniczenia indeksu unikatowego

  • Objawy: Podczas kopiowania danych do usługi Azure Cosmos DB występuje następujący błąd:

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

  • Przyczyna: Istnieją dwie możliwe przyczyny:

    • Przyczyna 1: Jeśli używasz funkcji Insert jako zachowania zapisu, ten błąd oznacza, że dane źródłowe mają wiersze lub obiekty o tym samym identyfikatorze.
    • Przyczyna 2: Jeśli użyjesz operacji Upsert jako zachowania zapisu i ustawisz inny unikatowy klucz dla kontenera, ten błąd oznacza, że dane źródłowe mają wiersze lub obiekty o różnych identyfikatorach, ale taką samą wartość dla zdefiniowanego unikatowego klucza.
  • Rozwiązanie:

    • Dla przyczyny 1 ustaw upsert jako zachowanie zapisu.
    • W przypadku przyczyny 2 upewnij się, że każdy dokument ma inną wartość dla zdefiniowanego unikatowego klucza.

Komunikat o błędzie: Liczba żądań jest duża

  • Objawy: Podczas kopiowania danych do usługi Azure Cosmos DB występuje następujący błąd:

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

  • Przyczyna: Liczba użytych jednostek żądań jest większa niż liczba dostępnych jednostek ŻĄDAŃ skonfigurowanych w usłudze Azure Cosmos DB. Aby dowiedzieć się, jak usługa Azure Cosmos DB oblicza jednostki ŻĄDAŃ, zobacz Jednostki żądań w usłudze Azure Cosmos DB.

  • Rozwiązanie: Wypróbuj następujące dwa rozwiązania:

    • Zwiększ liczbę procesorów RU kontenera do większej wartości w usłudze Azure Cosmos DB. To rozwiązanie poprawi wydajność działania kopiowania, ale będzie wiązać się z dodatkowymi kosztami w usłudze Azure Cosmos DB.
    • Zmniejsz wartość writeBatchSize do mniejszej wartości, na przykład 1000, i zmniejsz wartość parallelCopies do mniejszej wartości, takiej jak 1. To rozwiązanie zmniejszy wydajność uruchamiania kopiowania, ale nie spowoduje naliczenie dodatkowych kosztów w usłudze Azure Cosmos DB.

Brak kolumn w mapowaniu kolumn

  • Objawy: Podczas importowania schematu usługi Azure Cosmos DB do mapowania kolumn brakuje niektórych kolumn.

  • Przyczyna: Azure Data Factory potoków usługi Synapse wywnioskują schemat z pierwszych 10 dokumentów usługi Azure Cosmos DB. Jeśli niektóre kolumny lub właściwości dokumentu nie zawierają wartości, schemat nie jest wykrywany i w związku z tym nie jest wyświetlany.

  • Rozwiązanie: Możesz dostosować zapytanie, jak pokazano w poniższym kodzie, aby wymusić, aby wartości kolumn były wyświetlane w zestawie wyników z pustymi wartościami. Załóżmy, że w pierwszych 10 dokumentach brakuje niemożliwej kolumny). Alternatywnie możesz ręcznie dodać kolumnę do mapowania.

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

Komunikat o błędzie: GuidRepresentation dla czytelnika to CSharpLegacy

  • Objawy: Podczas kopiowania danych z bazy danych MongoAPI lub MongoDB usługi Azure Cosmos DB z polem UUID (Universally Unique Identifier) wystąpi następujący błąd:

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

  • Przyczyna: Istnieją dwa sposoby reprezentowania wartości UUID w formacie Binary JSON (BSON): UuidStardard i UuidLegacy. Domyślnie do odczytywania danych jest używana wartość UuidLegacy. Jeśli dane UUID w bazie danych MongoDB mają wartość UuidStandard, zostanie wyświetlony błąd.

  • Rozwiązanie: W ciągu połączenia bazy danych MongoDB dodaj opcję uuidRepresentation=standard. Aby uzyskać więcej informacji, zobacz MongoDB connection string (Ciąg połączenia bazy danych MongoDB).

Kod błędu: CosmosDbSqlApiOperationFailed

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

  • Przyczyna: Problem z operacją CosmosDbSqlApi. Dotyczy to konkretnie łącznika Cosmos DB (SQL API).

  • Zalecenie: Aby sprawdzić szczegóły błędu, zobacz dokument pomocy usługi Azure Cosmos DB. Aby uzyskać dalszą pomoc, skontaktuj się z zespołem usługi Azure Cosmos DB.

Następne kroki

Aby uzyskać więcej pomocy dotyczącej rozwiązywania problemów, wypróbuj następujące zasoby: