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:
Crie um serviço vinculado do Azure Cosmos DB para 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: 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.
Conteúdos relacionados
Para obter mais ajuda na solução de problemas, tente estes recursos: