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

Я работаю над аналитическим решением IoT, которое использует сообщения в формате Avro, отправленные в Azure IoT Hub, и (надеюсь) использует Stream Analytics для хранения сообщений в Data Lake и хранилище BLOB-объектов. Ключевым требованием является то, что контейнеры Avro должны выглядеть в хранилище точно такими же, какими они были при представлении в Центре Интернета вещей, в интересах последующих потребителей.

Я столкнулся с ограничением в Stream Analytics с детальным контролем над созданием отдельных файлов. При настройке нового пути к выходному потоку я могу указать только дату / день и час в префиксе пути, в результате чего будет один файл на каждый час вместо одного файла для каждого полученного сообщения. Заказчику требуются отдельные контейнеры больших двоичных объектов для каждого устройства и отдельные большие двоичные объекты для каждого события. Точно так же требование Data Lake диктует, по крайней мере, разумное соглашение об именах, определяемое устройством, с отдельными файлами для каждого принятого события.

Кто-нибудь успешно настроил Stream Analytics для создания нового файла каждый раз, когда он выводит сообщение из ввода? Это жесткое ограничение продукта?


person Pete M    schedule 20.12.2016    source источник


Ответы (1)


Stream Analytics действительно ориентирован на эффективную обработку больших потоков. Для вашего варианта использования вам понадобится дополнительный компонент для реализации вашей пользовательской логики.

Stream Analytics может выводить данные в BLOB-объекты, концентратор событий, хранилище таблиц или служебную шину. Другой вариант - использовать новый Маршруты концентраторов Интернета для маршрутизации непосредственно к концентратору событий, очереди служебной шины или теме.

Оттуда вы можете написать функцию Azure (или из BLOB-объекта или таблицы Хранилище, настраиваемое действие фабрики данных) и используйте SDK Data Lake Store для записи файлов с необходимой вам логикой.

person Alexandre Gattiker    schedule 21.12.2016
comment
Спасибо, Александр, это именно то, что мы в итоге сделали. Мы уже используем маршруты для выделения всеобъемлющих категорий сообщений на основе свойства типа, но это было бы немного чрезмерно с миллионами целей. Заказчик был готов отказаться от первоначального приема, поэтому мы сразу переходим к хранилищу, а затем используем ADF. - person Pete M; 03.01.2017
comment
@PeteM удалось ли вам удовлетворить эту потребность? Мы тоже ищем подобное решение. Можете ли вы помочь с выполненными шагами. - person kudlatiger; 23.01.2019
comment
@kudlatiger IIRC для этого решения мы разрешили ASA почасово передавать файлы в хранилище BLOB-объектов. Запланированное задание ADF подбирает его, считывает весь файл и выводит в Data Lake через USQL с помощью экстрактора csv. Поскольку он читает и пишет для каждого сообщения, USQL имеет доступ для использования идентификатора устройства или чего-либо еще, что мы хотим, при определении пути вывода для этой записи. - person Pete M; 07.02.2019