Partilhar via


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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

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

Este artigo fornece sugestões para solucionar problemas comuns com o Azure Cosmos DB e o Azure Cosmos DB para conectores NoSQL no Azure Data Factory e no Azure Synapse.

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

  • Sintomas: Quando você copia 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: o Azure Cosmos DB limita o tamanho de uma única solicitação a 2 MB. A fórmula é tamanho da solicitação = tamanho do documento único * tamanho do lote de gravação. Se o tamanho do documento for grande, o comportamento padrão resultará em um tamanho de solicitação muito grande.

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

    • Opção 1: altere o 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 para 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: Quando você copia 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: existem duas causas possíveis:

    • Causa 1: Se você usar Inserir como o comportamento de gravação, esse erro significa que seus dados de origem têm linhas ou objetos com a mesma ID.
    • Causa 2: Se você usar Upsert como o comportamento de gravação e definir outra chave exclusiva para o contêiner, esse erro significa que seus dados de origem têm linhas ou 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, certifique-se de que cada documento tem um valor diferente para a chave exclusiva definida.

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

  • Sintomas: Quando você copia 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 unidades de solicitação (RUs) usadas é maior do que as RUs disponíveis configuradas no Azure Cosmos DB. Para saber como o 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 de contêiner para um valor maior no Azure Cosmos DB. Essa solução melhorará o desempenho da atividade de cópia, mas incorrerá em mais custos no Azure Cosmos DB.
    • Diminua writeBatchSize para um valor menor, como 1000, e diminua 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 custos no Azure Cosmos DB.

Colunas ausentes no mapeamento de colunas

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

  • Causa: os pipelines do Azure Data Factory e Synapse inferem o esquema dos primeiros 10 documentos do Azure Cosmos DB. Se algumas colunas ou propriedades do documento não contiverem valores, o esquema não será detetado 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 está faltando nos primeiros 10 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 do 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 binário (BSON): UuidStandard e UuidLegacy. Por padrão, UuidLegacy é usado para ler dados. Você receberá um erro se seus dados UUID no MongoDB forem UuidStandard.

  • Resolução: na cadeia de conexão MongoDB, adicione a opção uuidRepresentation=standard . Para obter mais informações, consulte Cadeia de conexão 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 para 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 sua partição lógica.

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

Para obter mais ajuda na solução de problemas, tente estes recursos: