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


Ошибки и исключения Kusto.Ingest

Любая ошибка во время обработки приема на стороне клиента обозначается исключением C#.

Сбои

Исключения KustoDirectIngestClient

При попытке приема из нескольких источников во время приема могут возникнуть ошибки. Если прием данных завершается сбоем для одного из источников, он регистрируется, и клиент продолжает принимать остальные источники. После перебора всех источников для приема IngestClientAggregateException создается объект , содержащий IList<IngestClientException> IngestionErrors элемент .

IngestClientException и его производные классы содержат поле IngestionSource и Error поле . Два поля вместе создают сопоставление от источника, который не удалось принять, с ошибкой, которая произошла при попытке приема. Сведения можно использовать в списке, IngestionErrors чтобы выяснить, какие источники не удалось принять и почему. Исключение IngestClientAggregateException также содержит логическое свойство GlobalError, указывающее, произошла ли ошибка для всех источников.

Сбои при приеме из файлов или BLOB-объектов

Если при попытке приема данных из большого двоичного объекта или файла возникает сбой приема, источники приема не будут удалены, даже если deleteSourceOnSuccess флаг имеет значение true. Источники сохраняются для дальнейшего анализа. После того как источник ошибки будет понят и если ошибка возникла не из самого источника приема, пользователь клиента может попытаться повторно принять ее.

Сбои при приеме данных из IDataReader

При приеме данных из DataReader данные для приема сохраняются во временной папке с расположением <Temp Path>\Ingestions_<current date and time>по умолчанию . Эта папка по умолчанию всегда удаляется после успешного приема.

В методах IngestFromDataReader и флаг , retainCsvOnFailure значение по умолчанию которого — false, определяет, следует ли хранить файлы после IngestFromDataReaderAsync неудачного приема. Если для этого флага задано значение false, данные, которые не прошли прием, не будут сохраняться, что затрудняет понимание того, что пошло не так.

Исключения KustoQueuedIngestClient

KustoQueuedIngestClient прием данных путем отправки сообщений в очередь Azure. Если ошибка возникает до или во время процесса постановки в очередь, IngestClientAggregateException в конце процесса возникает исключение . Созданное исключение включает коллекцию IngestClientException, которая содержит источник каждой ошибки и не была размещена в очереди. Также возникает ошибка, которая произошла при попытке опубликовать сообщение.

Публикация ошибок в очереди с файлом или большим двоичным объектом в качестве источника

Если при использовании KustoQueuedIngestClientметодов возникает IngestFromFile/IngestFromBlob ошибка, источники не удаляются, даже если deleteSourceOnSuccess флаг имеет значение true. Вместо этого источники сохраняются для дальнейшего анализа.

После того как источник ошибки будет понят и если ошибка возникла не из самого источника приема, пользователь клиента может попытаться повторно отправить данные с помощью соответствующих IngestFromFile/IngestFromBlob методов с источником, завершив ошибку.

Сбои публикации в очереди с IDataReader в качестве источника

При использовании источника DataReader данные для отправки в очередь сохраняются во временной папке с расположением <Temp Path>\Ingestions_<current date and time>по умолчанию . Эта папка всегда удаляется после успешной отправки данных в очередь. В методах IngestFromDataReader и флаг , retainCsvOnFailure значение по умолчанию которого — false, определяет, следует ли хранить файлы после IngestFromDataReaderAsync неудачного приема. Если для этого флага задано значение false, данные, которые не прошли прием, не будут сохраняться, что затрудняет понимание того, что пошло не так.

Распространенные сбои

Ошибка Причина Меры по снижению риска
Имя> базы данных базы данных <не существует База данных не существует Проверьте имя базы данных в разделе kustoIngestionProperties/Create the database (Создать базу данных).
Сущность "имя таблицы, которая не существует" типа "Таблица", не найдена. Таблица не существует, и нет сопоставления CSV. Добавление сопоставления CSV или создание необходимой таблицы
Путь к> BLOB-объекту <исключен по причине: шаблон JSON должен приниматься с помощью параметра jsonMapping Прием JSON, если сопоставление JSON не предоставлено. Предоставление сопоставления JSON
Не удалось скачать BLOB-объект: "Удаленный сервер вернул ошибку: (404) Не найдено". большой двоичный объект не существует; Убедитесь, что большой двоичный объект существует. Если он существует, повторите попытку и обратитесь к команде Kusto.
Недопустимое сопоставление столбцов JSON: два или более элементов сопоставления указывают на один столбец. Сопоставление JSON содержит 2 столбца с разными путями Исправление сопоставления JSON
EngineError — [UtilsException] IngestionDownloader.Download: не удалось скачать один или несколько файлов (выполните поиск в KustoLogs по запросу ActivityID:<GUID1>, RootActivityId:<GUID2>) Не удалось скачать один или несколько файлов. Повторить попытку
Не удалось проанализировать: Stream с идентификатором "<имя> потока" имеет неправильный формат CSV, что не соответствует политике ValidationOptions CSV-файл с неправильным форматом (например, не имеет одинакового количества столбцов в каждой строке). Завершается ошибкой, только если для политики проверки задано значение ValidationOptions.ValidateCsvInputConstantColumns. Проверьте CSV-файлы. Это сообщение относится только к CSV/TSV-файлам.
IngestClientAggregateException с сообщением об ошибке "Отсутствуют обязательные параметры для допустимой подписанной URL-адреса" Используемый SAS является службой, а не учетной записью хранения. Использование SAS учетной записи хранения

Коды ошибок приема данных

Чтобы упростить обработку ошибок приема программно, сведения об ошибках обогащаются с помощью числового кода ошибки (IngestionErrorCode enumeration).

Полный список кодов ошибок приема см. в разделе Коды ошибок приема.

Подробный справочник по исключениям

CloudQueuesNotFoundException

Возникает при отсутствии очередей из кластера Управление данными

Базовый класс: исключение

Имя поля Тип Значение
Ошибка string Ошибка, которая произошла при попытке получения очередей из dm

Применимо только при использовании клиента приема в очереди Kusto. В процессе приема выполняется несколько попыток получить очереди Azure, связанные с dm. Если эти попытки завершаются сбоем, в поле "Ошибка" возникает исключение, содержащее причину сбоя. Возможно, также возникает внутреннее исключение в поле InnerException.

CloudBlobContainersNotFoundException

Возникает при отсутствии контейнеров BLOB-объектов из кластера Управление данными

Базовый класс: исключение

Имя поля Тип Значение
KustoEndpoint string Конечная точка соответствующего dm

Применимо только при использовании клиента приема в очереди Kusto.
При приеме источников, которые еще не находятся в контейнере Azure, таких как файлы, DataReader или Stream, данные передаются во временный BLOB-объект для приема. Исключение возникает, если не найдены контейнеры для отправки данных.

DuplicateIngestionPropertyException

Возникает при настройке свойства приема несколько раз

Базовый класс: исключение

Имя поля Тип Значение
PropertyName string Имя повторяющегося свойства

PostMessageToQueueFailedException

Возникает при сбое отправки сообщения в очередь

Базовый класс: исключение

Имя поля Тип Значение
QueueUri string Универсальный код ресурса (URI) очереди
Ошибка string Сообщение об ошибке, созданное при попытке отправки в очередь

Применимо только при использовании клиента приема в очереди Kusto.
Клиент приема данных в очереди отправляет данные, отправляя сообщение в соответствующую очередь Azure. При сбое после сбоя возникает исключение. Он будет содержать URI очереди, причину сбоя в поле "Ошибка" и, возможно, внутреннее исключение в поле InnerException.

DataFormatNotSpecifiedException

Возникает, когда требуется формат данных, но не указан в IngestionProperties

Базовый класс: IngestClientException

При приеме из Stream необходимо указать формат данных в свойстве IngestionProperties, чтобы правильно принимать данные. Это исключение возникает, если IngestionProperties.Format не указан .

InvalidUriIngestClientException

Возникает при отправке недопустимого URI большого двоичного объекта в качестве источника приема

Базовый класс: IngestClientException

CompressFileIngestClientException

Возникает, когда клиенту приема не удается сжать файл, предоставленный для приема

Базовый класс: IngestClientException

Файлы сжимаются перед приемом. Исключение возникает при неудачной попытке сжатия файла.

UploadFileToTempBlobIngestClientException

Возникает, когда клиенту приема не удается передать источник, предоставленный для приема, во временный BLOB-объект

Базовый класс: IngestClientException

SizeLimitExceededIngestClientException

Возникает, когда источник приема слишком велик

Базовый класс: IngestClientException

Имя поля Тип Значение
Размер long Размер источника приема
MaxSize long Максимальный размер, допустимый для приема

Если источник приема превышает максимальный размер 4 ГБ, возникает исключение. Проверка размера может быть переопределена флагом IgnoreSizeLimit в классе IngestionProperties. Однако мы не рекомендуем принимать отдельные источники размером более 1 ГБ. Дополнительные сведения см. в статье Рекомендации по приему kusto.

UploadFileToTempBlobIngestClientException

Возникает, когда клиенту приема не удается передать файл, предоставленный для приема, во временный BLOB-объект

Базовый класс: IngestClientException

DirectIngestClientException

Возникает при возникновении общей ошибки при прямом приеме

Базовый класс: IngestClientException

QueuedIngestClientException

Возникает при возникновении ошибки при приеме в очереди

Базовый класс: IngestClientException

IngestClientAggregateException

Возникает при возникновении одной или нескольких ошибок во время приема

Базовый класс: AggregateException

Имя поля Тип Значение
IngestionErrors IList<IngestClientException> Ошибки, возникающие при попытке приема данных, и связанные с ними источники
IsGlobalError bool Указывает, возникло ли исключение для всех источников.