Поделиться через


Устранение неполадок с соединителем 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. Если вы по-прежнему хотите использовать проверку подлинности ключа учетной записи, выполните следующие действия.
      1. Создайте связанную службу Azure Cosmos DB для NoSQL.

      2. Обновите связанную службу следующим шаблоном.

        {
          "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): UuidStardard и 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. Дополнительные сведения см. в разделе Логические секции.

Для получения дополнительных сведений об устранении неполадок воспользуйтесь следующими ресурсами: