Dépanner le connecteur Azure Cosmos DB dans Azure Data Factory et Azure Synapse

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article fournit des suggestions pour résoudre les problèmes courants liés aux connecteurs Azure Cosmos DB et Azure Cosmos DB for NoSQL dans Azure Data Factory et Azure Synapse.

Message d’erreur : La taille de la demande est trop grande

  • Symptômes : Lorsque vous copiez des données dans Azure Cosmos DB avec une taille du lot d’écriture par défaut, vous recevez l’erreur suivante : Request size is too large.

  • Cause : Azure Cosmos DB limite la taille d’une seule requête à 2 Mo. La formule est la suivante : taille de la requête = taille de document unique * taille du lot d’écriture. Si la taille de votre document est importante, le comportement par défaut entraîne une trop grande taille de la requête.

  • Résolution :
    Vous pouvez ajuster la taille du lot d’écriture. Dans le récepteur de l’activité de copie, réduisez la valeur de la taille du lot d’écriture (la valeur par défaut est 10 000).
    Si la réduction de la valeur de taille de lot d’écriture à 1 ne fonctionne toujours pas, remplacez votre API SQL Azure Cosmos DB V2 par V3. Pour effectuer cette configuration, vous avez deux possibilités :

    • Option 1 : remplacez votre type d’authentification par principal de service ou identité managée affectée par le système ou identité managée affectée par l’utilisateur.
    • Option 2 : Si vous souhaitez toujours utiliser l’authentification par clé de compte, procédez comme suit :
      1. Créez un service lié Azure Cosmos DB for NoSQL.

      2. Mettez à jour le service lié à l’aide du modèle suivant.

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

Message d’erreur : Violation de contrainte d’index unique

  • Symptômes : Lorsque vous copiez des données dans Azure Cosmos DB, vous recevez l’erreur suivante :

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

  • Cause : Il existe deux causes possibles :

    • Cause 1 : Si vous utilisez Insérer comme comportement d’écriture, cette erreur signifie que vos données sources ont des lignes ou des objets avec le même ID.
    • Cause 2 : Si vous utilisez Upsert comme comportement d’écriture et que vous définissez une autre clé unique sur le conteneur, cette erreur signifie que vos données sources ont des lignes ou des objets avec des ID différents, mais une même valeur pour la clé unique définie.
  • Résolution :

    • Pour la cause 1, définissez Upsert comme comportement d’écriture.
    • Pour la cause 2, assurez-vous que chaque document a une valeur différente pour la clé unique définie.

Message d’erreur : Le taux de demandes est élevé

  • Symptômes : Lorsque vous copiez des données dans Azure Cosmos DB, vous recevez l’erreur suivante :

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

  • Cause : Le nombre d’unités de requête (RU) utilisées est supérieur au nombre de RU disponibles configuré dans Azure Cosmos DB. Pour savoir comment Azure Cosmos DB calcule les unités de requête, consultez Unités de requête dans Azure Cosmos DB.

  • Résolution : Essayez l’une des deux solutions suivantes :

    • Définissez le nombre de RU dans le conteneur sur une valeur supérieure dans Azure Cosmos DB. Cette solution permet d’améliorer les performances de l’activité de copie, mais elle engendre des frais supplémentaires dans Azure Cosmos DB.
    • Diminuez la valeur writeBatchSize, par exemple sur 1 000, et diminuez parallelCopies, par exemple sur 1. Cette solution réduit les performances d’exécution de la copie, mais elle n’engendre pas de frais supplémentaires dans Azure Cosmos DB.

Colonnes manquantes dans le mappage de colonnes

  • Symptômes : Lorsque vous importez un schéma pour Azure Cosmos DB pour le mappage de colonnes, certaines colonnes sont manquantes.

  • Cause : Les pipelines Azure Data Factory et Synapse déduisent le schéma des 10 premiers documents Azure Cosmos DB. Si certaines colonnes ou propriétés du document ne contiennent pas de valeurs, le schéma n’est pas détecté et, par conséquent, n’est pas affiché.

  • Résolution : Vous pouvez paramétrer la requête comme indiqué dans le code suivant pour forcer l’affichage des valeurs de colonnes dans le jeu de résultats avec des valeurs vides. Supposons que la colonne impossible est absente dans les 10 premiers documents. Vous pouvez également ajouter manuellement la colonne pour le mappage.

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

Message d’erreur : Le GuidRepresentation pour le lecteur est CSharpLegacy

  • Symptômes : Lorsque vous copiez des données à partir de MongoAPI ou MongoDB Azure Cosmos DB avec le champ d’identificateur unique universel (UUID), vous recevez l’erreur suivante :

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

  • Cause : Il existe deux façons de représenter l’UUID en JSON binaire (BSON) : UuidStandard et UuidLegacy. Par défaut, UuidLegacy est utilisé pour lire les données. Vous recevez une erreur si vos données UUID dans MongoDB sont de type UuidStandard.

  • Résolution : Dans la chaîne de connexion MongoDB, ajoutez l’option uuidRepresentation=standard. Pour plus d’informations, consultez Chaîne de connexion MongoDB.

Code d’erreur : CosmosDbSqlApiOperationFailed

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

  • Cause : Problème lié à l’opération CosmosDbSqlApi. Cela s’applique spécifiquement au connecteur Azure Cosmos DB for NoSQL.

  • Recommandation : pour voir les détails de l’erreur, consultez le document d’aide sur Azure Cosmos DB. Pour une aide supplémentaire, contactez l’équipe Azure Cosmos DB.

Code d’erreur : CosmosDbSqlApiPartitionKeyExceedStorage

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

  • Cause : la taille des données de chaque partition logique est limitée et la clé de partition a atteint la taille maximale de votre partition logique.

  • Recommandation : vérifiez la conception de votre partition Azure Cosmos DB. Pour plus d’informations, consultez Partitions logiques.

Si vous avez besoin d’une aide supplémentaire, essayez les ressources suivantes :