Condividi tramite


Risolvere i problemi relativi ai connettori di Azure Cosmos DB in Azure Data Factory e Azure Synapse

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo fornisce suggerimenti per risolvere i problemi comuni relativi ai connettori Azure Cosmos DB e Azure Cosmos DB for NoSQL in Azure Data Factory e Azure Synapse.

Messaggio di errore: le dimensioni della richiesta sono troppo grandi

  • Sintomi: quando si copiano dati in Azure Cosmos DB con dimensioni batch di scrittura predefinite, viene visualizzato l'errore seguente: Request size is too large.

  • Causa: Azure Cosmos DB limita le dimensioni di una singola richiesta a 2 MB. La formula è Dimensioni richiesta = Dimensioni singolo documento * Dimensioni batch di scrittura. Se le dimensioni del documento sono grandi, il comportamento predefinito risulterà in una richiesta di dimensioni troppo grandi.

  • Soluzione:
    È possibile ottimizzare le dimensioni del batch di scrittura. Nel sink dell'attività di copia, ridurre il valore di Dimensioni batch di scrittura (il valore predefinito è 10000).
    Se la riduzione del valore delle dimensioni batch di scrittura su 1 non funziona ancora, modificare l'API SQL di Azure Cosmos DB da V2 a V3. Per completare questa configurazione, sono disponibili due opzioni:

    • Opzione 1: modificare il tipo di autenticazione in entità servizio o identità gestita assegnata dal sistema o identità gestita assegnata dall'utente.
    • Opzione 2: se si vuole comunque usare l'autenticazione della chiave dell'account, seguire questa procedura:
      1. Creare un servizio collegato Azure Cosmos DB for NoSQL.

      2. Aggiornare il servizio collegato con il modello seguente.

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

Messaggio di errore: Violazione del vincolo di indice univoco

  • Sintomi: quando si copiano dati in Azure Cosmos DB, viene visualizzato l'errore seguente:

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

  • Causa: le cause possono essere due:

    • Causa 1: se si usa Insert come comportamento di scrittura, questo errore indica che i dati di origine hanno righe o oggetti con lo stesso ID.
    • Causa 2: Se si usa Upsert come comportamento di scrittura e si imposta un'altra chiave univoca per il contenitore, questo errore indica che i dati di origine contengono righe/oggetti con ID diversi, ma lo stesso valore per la chiave univoca definita.
  • Risoluzione:

    • Per la causa 1, impostare Upsert come comportamento di scrittura.
    • Per la causa 2, assicurarsi che ogni documento abbia un valore diverso per la chiave univoca definita.

Messaggio di errore: La frequenza delle richieste è elevata

  • Sintomi: quando si copiano dati in Azure Cosmos DB, viene visualizzato l'errore seguente:

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

  • Causa: il numero di unità di richiesta usate è maggiore delle UR disponibili configurate in Azure Cosmos DB. Per informazioni su come Azure Cosmos DB calcola le UR, vedere Unità richiesta in Azure Cosmos DB.

  • Risoluzione: provare una delle due soluzioni seguenti:

    • Aumentare il numero di UR del contenitore a un valore maggiore in Azure Cosmos DB. Questa soluzione migliorerà le prestazioni dell'attività di copia, ma comporta un costo maggiore in Azure Cosmos DB.
    • Ridurre writeBatchSize a un valore minore, ad esempio 1000, e ridurre parallelCopies a un valore minore, ad esempio 1. Questa soluzione ridurrà le prestazioni di esecuzione della copia, ma non comporta costi aggiuntivi in Azure Cosmos DB.

Colonne mancanti nel mapping delle colonne

  • Sintomi: quando si importa uno schema per Azure Cosmos DB per il mapping delle colonne, mancano alcune colonne.

  • Causa: Le pipeline di Azure Data Factory e Synapse deducono lo schema dai primi 10 documenti di Azure Cosmos DB. Se alcune colonne o proprietà del documento non contengono valori, lo schema non viene rilevato e di conseguenza non viene visualizzato.

  • Soluzione: è possibile ottimizzare la query come illustrato nel codice seguente per forzare la visualizzazione dei valori di colonna nel set di risultati con valori vuoti. Supponiamo che la colonna impossibile non sia presente nei primi 10 documenti). In alternativa, è possibile aggiungere manualmente la colonna per il mapping.

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

Messaggio di errore: GuidRepresentation per il lettore è CSharpLegacy

  • Sintomi: quando si copiano dati da Azure Cosmos DB MongoAPI o MongoDB con il campo UUID (Universally Unique Identifier), viene visualizzato l'errore seguente:

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

  • Causa: esistono due modi per rappresentare l'UUID in JSON binario (BSON): UuidStandard e UuidLegacy. Per impostazione predefinita, viene usato UuidLegacy per leggere i dati. Verrà generato un errore se i dati UUID in MongoDB sono UuidStandard.

  • Soluzione: nella stringa di connessione MongoDB, aggiungere l'opzione uuidRepresentation=standard. Per altre informazioni, vedere Stringa di connessione MongoDB.

Codice errore: CosmosDbSqlApiOperationFailed

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

  • Causa: problema con l'operazione CosmosDbSqlApi. Questo vale per il connettore Azure Cosmos DB for NoSQL in particolare.

  • Raccomandazione: per controllare i dettagli dell'errore, vedere il documento della Guida di Azure Cosmos DB. Per altre informazioni, contattare il team di Azure Cosmos DB.

Codice errore: CosmosDbSqlApiPartitionKeyExceedStorage

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

  • Causa: le dimensioni dei dati di ogni partizione logica sono limitate e la chiave di partizione ha raggiunto le dimensioni massime della partizione logica.

  • Raccomandazione: controllare la progettazione della partizione di Azure Cosmos DB. Per altre informazioni, vedere Partizioni logiche.

Per altre informazioni sulla risoluzione dei problemi, usare le risorse seguenti: