Solución de problemas del conector Azure Cosmos DB en Azure Data Factory y Azure Synapse

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

En este artículo se proporcionan sugerencias para solucionar problemas comunes con los conectores de Azure Cosmos DB y Azure Cosmos DB for NoSQL en Azure Data Factory y Azure Synapse.

Mensaje de error: Request size is too large (El tamaño de la solicitud es demasiado grande)

  • Síntomas: Cuando se copian datos en Azure Cosmos DB con un tamaño de lote de escritura predeterminado, se recibe el siguiente error: Request size is too large.

  • Causa: Azure Cosmos DB limita el tamaño de una única solicitud a 2 MB. La fórmula es tamaño de la solicitud = tamaño de documento único * tamaño de lote de escritura. Si el tamaño del documento es grande, el comportamiento predeterminado generará un tamaño de solicitud demasiado grande.

  • Solución:
    Puede ajustar el tamaño del lote de escritura. En el receptor de la actividad de copia, reduzca el valor del tamaño de lote de escritura (el valor predeterminado es 10000).
    Si al reducir el valor del tamaño del lote de escritura a 1 sigue sin funcionar, cambie su API SQL de Azure Cosmos DB de V2 a V3. Para completar esta configuración, tiene dos opciones:

    • Opción 1: Cambie el tipo de autenticación a entidad de seguridad del servicio o identidad administrada asignada por el sistema o identidad administrada asignada por el usuario.
    • Opción 2: Si todavía desea usar la autenticación de clave de cuenta, siga estos pasos:
      1. Cree un servicio vinculado de Azure Cosmos DB for NoSQL.

      2. Actualice el servicio vinculado con la plantilla siguiente.

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

Mensaje de error: Unique index constraint violation (Infracción de restricción de índice único)

  • Síntomas: Al copiar datos en Azure Cosmos DB, recibe el siguiente error:

    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: Hay dos causas posibles:

    • Causa 1: Si utiliza Insert como comportamiento de escritura, este error indica que los datos de origen tienen filas u objetos con el mismo identificador.
    • Causa 2: Si usa Upsert como comportamiento de escritura y establece otra clave única en el contenedor, este error significa que los datos de origen tienen filas u objetos con identificadores diferentes, pero con el mismo valor para la clave única definida.
  • Solución:

    • Para la primera causa, establezca Upsert como comportamiento de escritura.
    • Para la segunda causa, asegúrese de que cada documento tenga un valor diferente para la clave única definida.

Mensaje de error: La tasa de solicitudes es grande

  • Síntomas: Al copiar datos en Azure Cosmos DB, recibe el siguiente error:

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

  • Causa: El número de unidades de solicitud (RU) usadas es mayor que el valor de RU disponible configurado en Azure Cosmos DB. Para saber cómo Azure Cosmos DB calcula las RU, consulte Unidades de solicitud en Azure Cosmos DB.

  • Solución: Pruebe una de las dos soluciones siguientes:

    • Aumente el número de RU de contenedor a un valor mayor en Azure Cosmos DB. Esta solución mejorará el rendimiento de la actividad de copia, pero supondrá más costo en Azure Cosmos DB.
    • Disminuya writeBatchSize a un valor inferior, como 1000, y parallelCopies a un valor inferior, como 1. Esta solución reducirá el rendimiento de la ejecución de copias, pero no supondrá un mayor costo en Azure Cosmos DB.

Falta una columna en la asignación de columnas

  • Síntomas: Cuando se importa un esquema en Azure Cosmos DB para la asignación de columnas, faltan algunas columnas.

  • Causa: las canalizaciones de Azure Data Factory y Synapse deducen el esquema de los diez primeros documentos de Azure Cosmos DB. Si algunas columnas o propiedades del documento no contienen valores, no se detectará el esquema y, por lo tanto, no se mostrará.

  • Solución: Puede optimizar la consulta como se muestra en el código siguiente para forzar que los valores de columna se muestren en el conjunto de resultados con valores vacíos. Supongamos que falta la columna impossible en los 10 primeros documentos. Como alternativa, puede agregar manualmente la columna para la asignación.

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

Mensaje de error: The GuidRepresentation for the reader is CSharpLegacy (El valor de GuidRepresentation del lector es CSharpLegacy)

  • Síntomas: Al copiar datos desde MongoAPI o MongoDB de Azure Cosmos DB con el campo de identificador único universal (UUID), recibe el siguiente error:

    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: Hay dos maneras de representar el UUID en JSON binario (BSON): UuidStardard y UuidLegacy. De forma predeterminada, UuidLegacy se usa para leer datos. Si los datos de UUID en MongoDB son UuidStandard, recibirá un error.

  • Solución: En la cadena de conexión de MongoDB, agregue la opción uuidRepresentation=standard. Para más información, consulte Cadena de conexión de MongoDB.

Código de error: CosmosDbSqlApiOperationFailed

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

  • Causa: Problema con la operación CosmosDbSqlApi. Esto se aplica específicamente al conector de Azure Cosmos DB for NoSQL.

  • Recomendación: para consultar los detalles del error, vea el documento de ayuda de Azure Cosmos DB. Para recibir ayuda adicional, póngase en contacto con el equipo de Azure Cosmos DB.

Código de error: CosmosDbSqlApiPartitionKeyExceedStorage

  • Mensaje: 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: el tamaño de los datos de cada partición lógica es limitado y la clave de partición alcanzó el tamaño máximo de la partición lógica.

  • Recomendación: Compruebe el diseño de la partición de Azure Cosmos DB. Para obtener más información, consulte Particiones lógicas.

Para obtener ayuda para solucionar problemas, pruebe estos recursos: