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

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Ten artykuł zawiera sugestie dotyczące rozwiązywania typowych problemów z łącznikami usług Azure Cosmos DB i Azure Cosmos DB for NoSQL w usługach Azure Data Factory i Azure Synapse.

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

  • Objawy: Podczas kopiowania danych do usługi Azure Cosmos DB z domyślnym rozmiarem partii zapisu występuje 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 * rozmiar partii zapisu. Jeśli rozmiar dokumentu jest duży, domyślne zachowanie spowoduje, że rozmiar żądania będzie zbyt duży.

  • Rozwiązanie:
    Rozmiar partii zapisu można dostroić. W ujściu działania kopiowania zmniejsz wartość rozmiaru partii zapisu (wartość domyślna to 10000).
    Jeśli zmniejszenie wartości rozmiaru partii zapisu do wartości 1 nadal nie działa, zmień interfejs API SQL usługi Azure Cosmos DB z wersji 2 na V3. Aby ukończyć tę konfigurację, masz dwie opcje:

    • Opcja 1. Zmień typ uwierzytelniania na jednostkę usługi lub tożsamość zarządzaną przypisaną przez system lub tożsamość zarządzaną przypisaną przez użytkownika.
    • Opcja 2: Jeśli nadal chcesz użyć uwierzytelniania za pomocą klucza konta, wykonaj następujące kroki:
      1. Utwórz połączoną usługę Azure Cosmos DB for NoSQL.

      2. Zaktualizuj połączoną usługę przy użyciu następującego szablonu.

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

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 Wstaw jako zachowanie zapisu, ten błąd oznacza, że dane źródłowe mają wiersze lub obiekty o tym samym identyfikatorze.
    • Przyczyna 2: Jeśli używasz operacji Upsert jako zachowania zapisu i ustawisz inny unikatowy klucz do kontenera, ten błąd oznacza, że dane źródłowe mają wiersze lub obiekty z różnymi identyfikatorami, ale taką samą wartość zdefiniowanego klucza unikatowego.
  • Rozwiązanie:

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

Komunikat o błędzie: Szybkość żą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żywanych jednostek żądania (RU) jest większa niż liczba dostępnych jednostek RU skonfigurowanych w usłudze Azure Cosmos DB. Aby dowiedzieć się, jak usługa Azure Cosmos DB oblicza jednostki RU, zobacz Request units in Azure Cosmos DB (Jednostki żądań w usłudze Azure Cosmos DB).

  • Rozwiązanie: Spróbuj wykonać jedną z następujących dwóch rozwiązań:

    • Zwiększ liczbę jednostek RU kontenera do większej wartości w usłudze Azure Cosmos DB. To rozwiązanie poprawi wydajność działania kopiowania, ale spowoduje zwiększenie kosztów w usłudze Azure Cosmos DB.
    • Zmniejsz wartość writeBatchSize do mniejszej wartości, takiej jak 1000, i zmniejsz wartość parallelCopies do mniejszej wartości, na przykład 1. To rozwiązanie zmniejszy wydajność uruchamiania kopiowania, ale nie spowoduje większego kosztu w usłudze Azure Cosmos DB.

Brak kolumn w mapowaniu kolumn

  • Objawy: podczas importowania schematu dla usługi Azure Cosmos DB na potrzeby mapowania kolumn brakuje niektórych kolumn.

  • Przyczyna: Potoki usługi Azure Data Factory i 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 zostanie wykryty i w związku z tym nie zostanie wyświetlony.

  • Rozwiązanie: zapytanie można dostroić, jak pokazano w poniższym kodzie, aby wymusić wyświetlanie wartości kolumn 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: Identyfikator GuidRepresentation dla czytelnika to CSharpLegacy

  • Objawy: Podczas kopiowania danych z usługi Azure Cosmos DB MongoAPI lub MongoDB przy użyciu pola uniwersalnego unikatowego identyfikatora (UUID) zostanie wyświetlony 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 identyfikatora UUID w binarnym formacie JSON (BSON): UuidStardard i UuidLegacy. Domyślnie funkcja UuidLegacy służy do odczytywania danych. Zostanie wyświetlony błąd, jeśli dane UUID w bazie danych MongoDB to UuidStandard.

  • Rozwiązanie: w parametry połączenia bazy danych MongoDB dodaj opcję uuidRepresentation=standard. Aby uzyskać więcej informacji, zobacz MongoDB parametry połączenia.

Kod błędu: CosmosDbSqlApiOperationFailed

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

  • Przyczyna: Problem z operacją CosmosDbSqlApi. Dotyczy to specjalnie łącznika usługi Azure Cosmos DB for NoSQL.

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

Kod błędu: CosmosDbSqlApiPartitionKeyExceedStorage

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

  • Przyczyna: Rozmiar danych każdej partycji logicznej jest ograniczony, a klucz partycji osiągnął maksymalny rozmiar partycji logicznej.

  • Zalecenie: Sprawdź projekt partycji usługi Azure Cosmos DB. Aby uzyskać więcej informacji, zobacz Partycje logiczne.

Aby uzyskać pomoc dotyczącą rozwiązywania problemów, wypróbuj następujące zasoby: