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:
Utwórz połączoną usługę Azure Cosmos DB for NoSQL.
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): UuidStandard 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.
Powiązana zawartość
Aby uzyskać pomoc dotyczącą rozwiązywania problemów, wypróbuj następujące zasoby: