Ошибки и исключения 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 |
Указывает, возникло ли исключение для всех источников. |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по