Sdílet prostřednictvím


Řešení potíží s konektorem Služby Azure Cosmos DB ve službě Azure Data Factory a Azure Synapse

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek obsahuje návrhy pro řešení běžných problémů s konektory Azure Cosmos DB a Azure Cosmos DB for NoSQL ve službě Azure Data Factory a Azure Synapse.

Chybová zpráva: Velikost požadavku je příliš velká

  • Příznaky: Při kopírování dat do služby Azure Cosmos DB s výchozí velikostí dávky zápisu se zobrazí následující chyba: Request size is too large.

  • Příčina: Azure Cosmos DB omezuje velikost jednoho požadavku na 2 MB. Vzorec je velikost požadavku = velikost jednoho dokumentu * velikost dávky zápisu. Pokud je velikost dokumentu velká, výchozí chování způsobí příliš velkou velikost požadavku.

  • Řešení:
    Velikost dávky zápisu můžete vyladit. V jímce aktivity kopírování snižte hodnotu velikosti dávky zápisu (výchozí hodnota je 1 0000).
    Pokud zmenšíte hodnotu velikosti dávky zápisu na 1, stále nefunguje, změňte rozhraní SQL API služby Azure Cosmos DB z V2 na V3. K dokončení této konfigurace máte dvě možnosti:

    • Možnost 1: Změňte typ ověřování na spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem.
    • Možnost 2: Pokud stále chcete použít ověřování pomocí klíče účtu, postupujte takto:
      1. Vytvořte propojenou službu Azure Cosmos DB for NoSQL.

      2. Aktualizujte propojenou službu pomocí následující šablony.

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

Chybová zpráva: Porušení omezení jedinečného indexu

  • Příznaky: Při kopírování dat do služby Azure Cosmos DB se zobrazí následující chyba:

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

  • Příčina: Existují dvě možné příčiny:

    • Příčina 1: Pokud jako chování při zápisu použijete insert , znamená tato chyba, že zdrojová data mají řádky nebo objekty se stejným ID.
    • Příčina 2: Pokud jako chování zápisu použijete upsert a nastavíte pro kontejner jiný jedinečný klíč, tato chyba znamená, že zdrojová data mají řádky nebo objekty s různými ID, ale stejnou hodnotu pro definovaný jedinečný klíč.
  • Řešení:

    • Pro příčinu 1 nastavte upsert jako chování zápisu.
    • V případě příčiny 2 se ujistěte, že má každý dokument jinou hodnotu definovaného jedinečného klíče.

Chybová zpráva: Frekvence požadavků je velká

  • Příznaky: Při kopírování dat do služby Azure Cosmos DB se zobrazí následující chyba:

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

  • Příčina: Počet použitých jednotek žádostí (RU) je větší než dostupné jednotky RU nakonfigurované ve službě Azure Cosmos DB. Informace o výpočtu RU služby Azure Cosmos DB najdete v tématu Jednotky žádostí ve službě Azure Cosmos DB.

  • Řešení: Vyzkoušejte některé z následujících dvou řešení:

    • Zvyšte počet RU kontejneru na vyšší hodnotu ve službě Azure Cosmos DB. Toto řešení zlepší výkon aktivity kopírování, ale ve službě Azure Cosmos DB se za něj budou zvyšovat náklady.
    • Snížit writeBatchSize na menší hodnotu, například 1000, a snížit paralelněCopies na menší hodnotu, například 1. Toto řešení sníží výkon spuštění kopírování, ale ve službě Azure Cosmos DB se neúčtují další náklady.

Chybějící sloupce v mapování sloupců

  • Příznaky: Při importu schématu pro mapování sloupců ve službě Azure Cosmos DB chybí některé sloupce.

  • Příčina: Kanály Azure Data Factory a Synapse odvozují schéma z prvních 10 dokumentů Azure Cosmos DB. Pokud některé sloupce nebo vlastnosti dokumentu neobsahují hodnoty, schéma se nezjistí a proto se nezobrazí.

  • Řešení: Dotaz můžete vyladit tak, jak je znázorněno v následujícím kódu, aby se hodnoty sloupců zobrazovaly v sadě výsledků s prázdnými hodnotami. Předpokládejme, že v prvních 10 dokumentech chybí nemožné sloupce). Případně můžete sloupec pro mapování přidat ručně.

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

Chybová zpráva: Identifikátor GuidRepresentation pro čtenáře je CSharpLegacy

  • Příznaky: Při kopírování dat z MongoAPI nebo MongoDB ve službě Azure Cosmos DB s polem UUID (Universally Unique Identifier) se zobrazí následující chyba:

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

  • Příčina: Existují dva způsoby, jak znázorňovat UUID v binárním formátu JSON (BSON): UuidStardard a UuidLegacy. Ve výchozím nastavení se UuidLegacy používá ke čtení dat. Pokud data UUID v MongoDB jsou UuidStandard, zobrazí se chyba.

  • Řešení: V připojovací řetězec MongoDB přidejte uuidRepresentation=standard. Další informace najdete v tématu Připojovací řetězec MongoDB.

Kód chyby: CosmosDbSqlApiOperationFailed

  • Zpráva: CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.

  • Příčina: Problém s operací CosmosDbSqlApi To platí konkrétně pro konektor Azure Cosmos DB for NoSQL.

  • Doporučení: Pokud chcete zkontrolovat podrobnosti o chybě, přečtěte si dokument nápovědy ke službě Azure Cosmos DB. Pokud potřebujete další pomoc, obraťte se na tým služby Azure Cosmos DB.

Kód chyby: CosmosDbSqlApiPartitionKeyExceedStorage

  • Zpráva: 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.

  • Příčina: Velikost dat každého logického oddílu je omezená a klíč oddílu dosáhl maximální velikosti logického oddílu.

  • Doporučení: Zkontrolujte návrh oddílů Služby Azure Cosmos DB. Další informace naleznete v tématu Logické oddíly.

Další nápovědu k řešení potíží najdete v těchto zdrojích informací: