Compartilhar via


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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Este artigo fornece sugestões para solucionar problemas comuns com os conectores do Azure Cosmos DB e do Azure Cosmos DB for NoSQL 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.

  • Resolução:
    Você pode ajustar o tamanho do lote de gravação. No coletor de atividades de cópia, reduza o valor do tamanho do lote de gravação (o valor padrão é 10000).
    Se a redução do valor do tamanho do lote de gravação para 1 ainda não funcionar, altere a API do SQL do Azure Cosmos DB de V2 para V3. Para concluir essa configuração, você tem duas opções:

    • Opção 1: altere seu tipo de autenticação para entidade de serviço ou identidade gerenciada atribuída pelo sistema ou identidade gerenciada atribuída pelo usuário.
    • Opção 2: se você ainda quiser usar a autenticação de chave de conta, siga estas etapas:
      1. Crie um serviço vinculado do Azure Cosmos DB for NoSQL.

      2. Atualize o serviço vinculado com o modelo a seguir.

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

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 do Azure Cosmos DB for NoSQL 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.

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