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:
Crie um serviço vinculado do Azure Cosmos DB for NoSQL.
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.
Conteúdo relacionado
Para obter mais ajuda com a solução de problemas, experimente estes recursos: