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


выходные данные Хранилище BLOB-объектов Azure и Data Lake Storage 2-го поколения из Stream Analytics

Azure Data Lake Storage 2-го поколения делает служба хранилища Azure основой для создания корпоративных озер данных в Azure. Data Lake Storage 2-го поколения предназначен для обслуживания нескольких петабайтов информации при сохранении сотен гигабит пропускной способности. С его помощью можно легко управлять большими объемами данных. Основной частью Data Lake Storage 2-го поколения является добавление иерархического пространства имен в Хранилище BLOB-объектов Azure.

Хранилище BLOB-объектов предлагает экономичное и масштабируемое решение для хранения больших объемов неструктурированных данных в облаке. Общие сведения о хранилище BLOB-объектов и его использовании см. в статье "Отправка, скачивание и перечисление BLOB-объектов с помощью портал Azure".

Примечание.

Сведения о поведении, характерных для форматов Avro и Parquet, см. в следующих разделах в обзоре.

Конфигурация выходных данных

В следующей таблице перечислены имена свойств и их описания для создания большого двоичного объекта или Data Lake Storage 2-го поколения выходных данных.

Имя свойства Description
Псевдоним выходных данных Понятное имя, используемое в запросах для направления выходных данных запроса в этот большой двоичный объект.
Storage account Имя учетной записи хранения, в которую отправляются выходные данные.
Ключ учетной записи хранения Секретный ключ, связанный с учетной записью хранения.
Контейнер Логическая группировка больших двоичных объектов, хранящихся в хранилище BLOB-объектов. При передаче BLOB-объекта в Хранилище BLOB-объектов для него необходимо указать контейнер.

Имя динамического контейнера является необязательным. Он поддерживает один и только один динамический {field} в имени контейнера. Поле должно существовать в выходных данных и следовать политике имени контейнера.

Тип данных поля должен быть string. Чтобы использовать несколько динамических полей или объединить статический текст вместе с динамическим полем, его можно определить в запросе со встроенными строковыми функциями, например CONCAT и LTRIM.
Формат сериализации событий Формат сериализации для выходных данных. Поддерживаются форматы JSON, CSV, Avro и Parquet. Delta Lake указан здесь как вариант. Данные отображаются в формате Parquet, если выбран Delta Lake. Дополнительные сведения о Delta Lake.
Имя разностного пути Требуется, если формат сериализации событий — Delta Lake. Путь, используемый для записи таблицы Delta Lake в указанном контейнере. Он содержит имя таблицы. Дополнительные сведения и примеры см. в статье "Запись в таблицу Delta Lake".
Write mode Режим записи определяет способ записи Azure Stream Analytics в выходной файл. Точно один раз доставка происходит только в том случае, если режим записи — один раз. Для получения дополнительных сведений см. следующий раздел.
Столбец секционирования Необязательно. {field} Имя выходных данных в секционирование. Поддерживается только один столбец секции.
Шаблон пути Требуется, если формат сериализации событий — Delta Lake. Шаблон пути к файлу, используемый для записи BLOB-объектов в указанном контейнере.

В шаблоне пути можно использовать один или несколько экземпляров переменных даты и времени, чтобы указать частоту записи больших двоичных объектов: {date}, . {time}

Если режим записи установлен один раз, необходимо использовать оба {date} и {time}.

Вы можете использовать настраиваемое секционирование BLOB-объектов, чтобы указать одно пользовательское {field} имя из данных события для секционирования больших двоичных объектов. Имя поля может содержать буквы, цифры, дефисы и символы подчеркивания. Ограничения настраиваемых полей включают следующие:
  • Динамическое пользовательское {field} имя не разрешено, если режим записи — один раз.
  • Имена полей не учитывает регистр. Например, служба не может различать столбец и столбец ID id.
  • Вложенные поля не разрешены. Вместо этого используйте псевдоним в запросе задания для "сведения" поля.
  • В имени поля запрещено использовать выражения.

Этот компонент допускается использовать в пути конфигурации описателей пользовательских форматов даты и времени. Настраиваемые форматы даты и времени должны быть указаны одновременно и заключены в ключевое {datetime:\<specifier>} слово. Допустимые входные данные: \<specifier> yyyy, MMHHddHdM, mm, mssили .s Ключевое {datetime:\<specifier>} слово можно использовать несколько раз в пути для формирования пользовательских конфигураций даты и времени.

Примеры:
  • Пример 1: cluster1/logs/{date}/{time}
  • Пример 2: cluster1/logs/{date}
  • Пример 3: cluster1/{client_id}/{date}/{time}
  • Пример 4. cluster1/{datetime:ss}/{myField} Расположение запроса SELECT data.myField AS myField FROM Input;
  • Пример 5. cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Метка времени создаваемой структуры папок соответствует времени UTC, а не местному времени. System.Timestamp — это время, используемое для секционирования на основе времени.

Именование файлов использует следующее соглашение:

{Path Prefix Pattern}/schemaHashcode_Guid_Number.extension

Здесь представляет уникальный идентификатор, Guid назначенный внутренней записи, созданной для записи в файл БОЛЬШОго двоичного объекта. Число представляет индекс блока BLOB-объектов.

Выходные файлы примера:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

Дополнительные сведения об этом компоненте см. в статье Пользовательские шаблоны даты и времени в пути для выходных данных хранилища BLOB-объектов Azure Stream Analytics (предварительная версия).
Формат даты Требуется, если формат сериализации событий — Delta Lake. Если в префиксе пути используется маркер даты, вы можете выбрать формат даты для упорядочивания своих файлов. Например, YYYY/MM/DD.
Формат времени: Требуется, если формат сериализации событий — Delta Lake. Если в префиксе пути используется маркер времени, укажите формат времени для упорядочивания своих файлов.
Минимальное количество строк Количество минимальных строк на пакет. Для Parquet для каждого пакета создается новый файл. Текущее значение по умолчанию — 2000 строк, а допустимое максимальное — 10 000 строк.
Максимальное время Максимальное время ожидания на пакет. После этого пакет записывается в выходные данные, даже если минимальные требования к строкам не выполнены. Текущее значение по умолчанию — 1 минута, а максимально допустимое — 2 часа. Если выходные данные большого двоичного объекта имеют частоту шаблона пути, время ожидания не может быть выше диапазона времени секции.
Кодировка Если используется формат CSV или JSON, необходимо указать кодировку. В настоящее время единственным поддерживаемым форматом кодировки является UTF-8.
Разделитель Применяется только для сериализации в формате CSV. Stream Analytics поддерживает множество общих разделителей для сериализации данных CSV. Поддерживаются такие разделители: запятая, точка с запятой, пробел, табуляция и вертикальная черта.
Формат Применяется только для сериализации в формате JSON. Вариант строки-разделители предусматривает форматирование выходных данных таким образом, что каждый объект JSON будет отделен новой строкой. Если выбрать вариант строки-разделители, то JSON считывает по одному объекту за раз. Весь контент сам по себе не будет допустимым JSON. Вариант массив означает, что выходные данные будут отформатированы как массив объектов JSON. Этот массив будет закрыт только в том случае, если выполнение задания будет остановлено или Stream Analytics перейдет в следующее временное окно. В общем случае предпочтительнее использовать разделенный строкой JSON, так как он не требует специальной обработки, пока выходной файл по-прежнему записывается в.

Точно один раз доставка (общедоступная предварительная версия)

Сквозная доставка ровно один раз при чтении любых входных данных потоковой передачи означает, что обработанные данные записываются в Data Lake Storage 2-го поколения выходные данные один раз без дубликатов. Если эта функция включена, задание Stream Analytics гарантирует, что данные не будут потеряны, а дубликаты не создаются в качестве выходных данных после последнего выходного времени, инициированного пользователем. Это упрощает конвейер потоковой передачи, не внедряя и устраняя неполадки логики дедупликации.

Write mode

Существует два способа записи Stream Analytics в хранилище BLOB-объектов или Data Lake Storage 2-го поколения учетной записи. Один из способов — добавить результаты в тот же файл или в последовательность файлов, в которых будут поступать результаты. Другим способом является запись всех результатов для секции времени, когда все данные для секции времени доступны. В режиме записи в режиме "Один раз" включена доставка.

Для Delta Lake нет параметра режима записи. Однако выходные данные Delta Lake также предоставляют точно один раз гарантии с помощью журнала Delta. Для этого не требуется секционирование времени и непрерывно записывает результаты на основе параметров пакетной обработки, определенных пользователем.

Примечание.

Если вы предпочитаете не использовать функцию предварительной версии для точной доставки, выберите "Добавить в качестве результатов".

Настройка

Чтобы получить точно однократную доставку для хранилища BLOB-объектов или учетной записи Data Lake Storage 2-го поколения, необходимо настроить следующие параметры:

  • Выберите один раз после того, как все результаты секции времени доступны для режима записи.
  • Предоставьте шаблон пути как указанным, так {date} и {time} заданным.
  • Укажите формат даты и времени.

Ограничения

  • Подпоток не поддерживается.
  • Шаблон пути становится обязательным свойством и должен содержать оба {date} и {time}. Динамическое настраиваемое {field} имя не разрешено. Дополнительные сведения о шаблоне пользовательского пути.
  • Если задание запускается в пользовательское время до или после последнего выходного времени, возникает риск перезаписи файла. Например, если для формата времени задано значение HH, файл создается каждый час. Если вы остановите задание в 8:15 и перезапустите задание в 8:30, файл, созданный в диапазоне от 8 до 9 утра, охватывает только данные от 8:30 до 9 утра. Данные с 8 утра до 8:15 утра теряются при перезаписи.

Выходные файлы BLOB-объектов

При использовании хранилища BLOB-объектов в качестве выходных данных новый файл создается в большом двоичном объекте в следующих случаях:

  • Файл превышает максимально допустимое количество блоков (в настоящее время составляет 50 000). Возможно, достигнуто максимально допустимое количество блоков, не достигая максимального размера большого двоичного объекта. Например, при высокой скорости вывода данных в блоке будет большее число байтов, значит, и размер файла будет большим. В случае низкой скорости вывода данных в каждом блоке будет меньше данных, а значит, и размер файла будет меньшим.
  • Существует изменение схемы в выходных данных, а формат выходных данных требует фиксированной схемы (CSV, Avro или Parquet).
  • Задание перезапускается либо внешним образом, либо пользователем, останавливая его и запуская его, либо внутренне для обслуживания системы или восстановления ошибок.
  • Запрос полностью секционирован, и для каждой выходной секции создается новый файл. Это происходит от использования PARTITION BY или собственной параллелизации, введенной на уровне совместимости 1.2.
  • Пользователь удаляет файл или контейнер учетной записи хранения.
  • Выходные данные секционируются с помощью шаблона префикса пути, а новый большой двоичный объект используется при переходе запроса к следующему часу.
  • Выходные данные секционируются настраиваемым полем, а новый большой двоичный объект создается на ключ секции, если он не существует.
  • Выходные данные секционируются пользовательским полем, в котором кратность ключа секции превышает 8000, а новый большой двоичный объект создается на ключ секции.

Секционирование

Для ключа секции используйте {date} и {time} маркеры из полей событий в шаблоне пути. Выберите формат даты, например YYYY/MM/DD, DD/MM/YYYYили MM-DD-YYYY. HH используется для формата времени. Выходные данные BLOB-объектов можно секционировать по одному пользовательскому атрибуту {fieldname} события или {datetime:\<specifier>}. Количество модулей записи для выходных данных соответствует числу секций входных данных, если запросы полностью параллелизуемы.

Размер выходного пакета

Максимальный размер сообщения см. в статье Ограничения службы хранилища Azure. Максимальный размер блока BLOB-объектов составляет 4 МБ, а максимальное число блоков больших двоичных объектов — 50 000.

Ограничения

  • Если символ косой черты (/) используется в шаблоне пути (например, /folder2/folder3), создаются пустые папки, и они не отображаются в Обозреватель службы хранилища.
  • Stream Analytics добавляется к тому же файлу в случаях, когда новый большой двоичный объект не нужен. Это может привести к созданию дополнительных триггеров, если службы Azure, такие как Сетка событий Azure, настроены для активации в обновлении файла BLOB-объектов.
  • Stream Analytics добавляется к большому двоичному объекту по умолчанию. Если выходной формат является массивом JSON, он завершает файл при завершении работы или при переходе выходных данных к следующему разделу для выходных данных с секционированием по времени. В некоторых случаях, например нечий перезапуск, возможно, отсутствует закрывающая квадратная скобка (]) для массива JSON.