Устранение неполадок с соединителем Azure Cosmos DB в Фабрике данных Azure и Azure Synapse
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье приводятся рекомендации по устранению распространенных проблем с соединителями Azure Cosmos DB и Azure Cosmos DB для NoSQL в Фабрика данных Azure и Azure Synapse.
Сообщение об ошибке: слишком большой размер запроса
Симптомы. При копировании данных в Azure Cosmos DB с размером пакета записи по умолчанию возникает следующая ошибка:
Request size is too large.
.Причина. В Azure Cosmos DB размер одного запроса не должен превышать 2 МБ. Формула выглядит так: размер запроса = размер одного документа * размер пакета для записи. Если размер документа велик, то поведение по умолчанию приведет к превышению размера запроса.
Разрешение:
Размер пакета для записи можно настроить. В приемнике действий копирования уменьшите значение размера пакета записи (значение по умолчанию — 10000).
Если уменьшение размера пакета записи до 1 по-прежнему не работает, измените API SQL Azure Cosmos DB с версии 2 на V3. Чтобы завершить эту конфигурацию, у вас есть два варианта:- Вариант 1. Измените тип проверки подлинности на субъект-службу или назначаемое системой управляемое удостоверение или управляемое удостоверение, назначаемое пользователем.
-
Вариант 2. Если вы по-прежнему хотите использовать проверку подлинности ключа учетной записи, выполните следующие действия.
Создайте связанную службу Azure Cosmos DB для NoSQL.
Обновите связанную службу следующим шаблоном.
{ "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>" } } } }
Сообщение об ошибке: нарушение ограничения уникального индекса
Симптомы. При копировании данных в Azure Cosmos DB возникает следующая ошибка.
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.\"]}...
Причина: существуют две возможные причины.
- Причина 1. Если вы используете инструкцию Insert в качестве поведения записи, эта ошибка означает, что в исходных данных есть строки или объекты с одинаковыми идентификаторами.
- Причина 2. Если вы используете инструкцию Upsert в качестве поведения записи и задаете другой уникальный ключ для контейнера, эта ошибка означает, что в исходных данных есть строки или объекты с разными идентификаторами, но одинаковыми значениями уникального ключа.
Решение.
- Для первой причины задайте инструкцию Upsert в качестве поведения записи.
- Для второй причины убедитесь в том, что у всех документов разные значения уникального ключа.
Сообщение об ошибке: скорость запроса велика
Симптомы. При копировании данных в Azure Cosmos DB возникает следующая ошибка.
Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}
Причина. Используется больше единиц запросов (ЕЗ), чем доступное число ЕЗ, настроенное в Azure Cosmos DB. Сведения о том, как в Azure Cosmos DB рассчитывается число ЕЗ, см. в разделе Единицы запросов в Azure Cosmos DB.
Решение. Попробуйте любое из решений, представленных ниже.
- Увеличьте значение ЕЗ контейнера в Azure Cosmos DB. Это повысит производительность действия копирования, но потребует дополнительных затрат на Azure Cosmos DB.
- Уменьшите значение writeBatchSize, например до 1000, и значение parallelCopies, например до 1. Это снизит производительность действия копирования, но не потребует дополнительных затрат на Azure Cosmos DB.
Столбцы отсутствуют в сопоставлении столбцов
Симптомы. При импорте схемы для сопоставления столбцов в Azure Cosmos DB некоторые столбцы отсутствуют.
Причина. Фабрика данных Azure и конвейеры Synapse выводят схему из первых 10 документов Azure Cosmos DB. Если некоторые столбцы или свойства документа не содержат значений, схема не обнаруживается и, следовательно, не отображается.
Решение. Можно настроить запрос, как показано в приведенном ниже образце кода, чтобы принудительно отображать столбцы с пустыми значениями в результирующем наборе. Предположим, что в первых 10 документах отсутствует столбец impossible. Кроме того, можно вручную добавить столбец для сопоставления.
select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
Сообщение об ошибке: GuidRepresentation для средства чтения — CSharpLegacy
Симптомы. При копировании данных из MongoAPI или MongoDB в Azure Cosmos DB с полем универсального уникального идентификатора (UUID) появляется следующее сообщение об ошибке.
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,’“,
Причина. Существует два способа представления UUID в двоичном формате JSON (BSON): UuidStandard и UuidLegacy. По умолчанию UuidLegacy используется для чтения данных. Если данные UUID в MongoDB представлены как UuidStandard, произойдет ошибка.
Решение. В строке подключения MongoDB добавьте параметр uuidRepresentation=standard. Дополнительные сведения см. в разделе о строке подключения MongoDB.
Код ошибки: CosmosDbSqlApiOperationFailed
Сообщение.
CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.
Причина. Проблема при выполнении операции CosmosDbSqlApi. Это относится к соединителю Azure Cosmos DB для NoSQL.
Рекомендация. Сведения об ошибке см. в справочном документе по Azure Cosmos DB. За дальнейшей помощью обратитесь к команде Azure Cosmos DB.
Код ошибки: CosmosDbSqlApiPartitionKeyExceedStorage
Сообщение.
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.
Причина. Размер данных каждой логической секции ограничен, а ключ секции достиг максимального размера.
Рекомендации. Проверьте структуру секций Azure Cosmos DB. Дополнительные сведения см. в разделе Логические секции.
Связанный контент
Для получения дополнительных сведений об устранении неполадок воспользуйтесь следующими ресурсами: