Solucionar problemas do conector Azure Cosmos DB no Azure Data Factory e no Azure Synapse

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo fornece sugestões para solucionar problemas comuns com os conectores Azure Cosmos DB e Azure Cosmos DB (SQL API) no Azure Data Factory e no Azure Synapse.

Mensagem de erro: O tamanho da solicitação é muito grande

  • Sintomas: ao copiar dados para o Azure Cosmos DB com um tamanho de lote de gravação padrão, você recebe o seguinte erro: Request size is too large.

  • Causa: Azure Cosmos DB limita o tamanho de uma única solicitação para 2 MB. A fórmula é tamanho da solicitação = tamanho do documento único * tamanho do lote de gravação. Se o documento for grande, o comportamento padrão resultará em uma solicitação grande demais. Você pode ajustar o tamanho do lote de gravação.

  • Resolução: no coletor de atividades de cópia, reduza o valor do tamanho do lote de gravação (o valor padrão é 10.000).

Mensagem de erro: Violação de restrição de índice exclusivo

  • Sintomas: ao copiar dados para o Azure Cosmos DB, você recebe o seguinte erro:

    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: Há duas causas possíveis:

    • Causa 1: se você usar Insert como comportamento de gravação, esse erro significa que os dados de origem têm linhas ou objetos com a mesma ID.
    • Causa 2: se você usar Upsert como comportamento de gravação e definir outra chave exclusiva para o contêiner, esse erro significa que os dados de origem têm linhas/objetos com IDs diferentes, mas o mesmo valor para a chave exclusiva definida.
  • Resolução:

    • Para a causa 1, defina Upsert como o comportamento de gravação.
    • Para a causa 2, verifique se cada documento tem um valor diferente para a chave exclusiva definida.

Mensagem de erro: A taxa de solicitação é alta

  • Sintomas: ao copiar dados para o Azure Cosmos DB, você recebe o seguinte erro:

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

  • Causa: o número de RUS (unidades de solicitação usadas) é maior que o RUS disponível configurado no Azure Cosmos DB. Para saber como Azure Cosmos DB calcula RUs, consulte unidades de solicitação no Azure Cosmos DB.

  • Resolução: Tente uma das duas soluções a seguir:

    • Aumente o número de RUs do contêiner para um valor maior em Azure Cosmos DB. Essa solução melhorará o desempenho da atividade de cópia, mas incorrerá em mais custo em Azure Cosmos DB.
    • Diminua o writeBatchSize para um valor menor, como 1000, e diminua o parallelCopies para um valor menor, como 1. Essa solução reduzirá o desempenho da execução de cópia, mas não incorrerá em mais custo em Azure Cosmos DB.

Coluna ausente no mapeamento de coluna

  • Sintomas: Quando você importa o esquema para Azure Cosmos DB para mapeamento de coluna, algumas colunas estão ausentes.

  • Causa: os pipelines do Azure Data Factory e do Synapse inferem o esquema dos primeiros 10 documentos do Azure Cosmos DB. Se algumas colunas de documento ou propriedades não contiverem valores, o esquema não será detectado e, consequentemente, não será exibido.

  • Resolução: você pode ajustar a consulta, conforme mostrado no código a seguir, para forçar os valores de coluna a serem exibidos no conjunto de resultados com valores vazios. Suponha que a coluna impossível esteja ausente nos 10 primeiros documentos). Como alternativa, você pode adicionar manualmente a coluna para mapeamento.

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

Mensagem de erro: O GuidRepresentation para o leitor é CSharpLegacy

  • Sintomas: quando você copia dados de Azure Cosmos DB MongoAPI ou MongoDB com o campo identificador universalmente exclusivo (UUID), você recebe o seguinte erro:

    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: há duas maneiras de representar o UUID, em JSON (BSON) vinário: UuidStardard e UuidLegacy. Por padrão, UuidLegacy é usado para ler dados. Você encontrará um erro se os dados do UUID no MongoDB forem UuidStandard.

  • Resolução: na cadeia de conexão do MongoDB, adicione a opção uuidRepresentation=standard. Para obter mais informações, consulte cadeia de conexão do MongoDB.

Código de erro: CosmosDbSqlApiOperationFailed

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

  • Causa: um problema com a operação CosmosDbSqlApi. Isso se aplica ao conector Cosmos DB (SQL API) especificamente.

  • Recomendação: para verificar os detalhes do erro, consulte o documento de ajuda do Azure Cosmos DB. Para obter mais ajuda, entre em contato com a equipe do Azure Cosmos DB.

Código de erro: CosmosDbSqlApiPartitionKeyExceedStorage

  • Mensagem: 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: o tamanho dos dados de cada partição lógica é limitado e a chave de partição atingiu o tamanho máximo da partição lógica.

  • Recomendação: verifique o design da partição do Azure Cosmos DB. Para obter mais informações, confira Partições lógicas.

Próximas etapas

Para obter mais ajuda com a solução de problemas, experimente estes recursos: