создать новое событие в выходном адаптере streaminsight

У меня следующая проблема в StreamInsight. У меня есть запрос, в котором появились новые задачи из заказа и активировали выходной адаптер, чтобы сделать прогноз. Выходной адаптер записывает прогнозируемое время цикла задачи в таблицу (в Windows Azure). Предсказание основано на нейронных сетях и подключается к выходному адаптеру. После того, как прогноз написан в таблице, я хочу сделать что-то еще со всеми прогнозируемыми временами. Итак, во втором запросе я хочу подсчитать количество письменных задач во временном окне 5 минут. Когда количество прогнозируемых значений, сохраненных в таблице, равно количеству задач в заказе, я хочу получить все прогнозируемые значения из таблицы и сделать прогноз времени цикла заказа.

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

Возможно, этот рисунок проясняет проблему: http://i40.tinypic.com/4h4850.jpg

Надеюсь, кто-нибудь может мне помочь. Спасибо, Карло.


person Carlo    schedule 14.05.2013    source источник
comment
Я просто хочу убедиться, что правильно тебя понял. У вас есть адаптер ввода задачи, который передает запрос, выходные данные которого выгружаются в SQL. Механизм прогнозирования нейронной сети загружает эти данные из SQL, выполняет над ними некоторую операцию, а затем записывает их обратно в SQL. Затем вы хотите получить эти результаты из SQL и запустить их через другой запрос?   -  person TXPower275    schedule 15.05.2013
comment
Почти правильно, запрос передает выходной адаптер => выходной адаптер вызывает нейронную сеть, чтобы предсказать время цикла => возвращает результат => затем выходной адаптер записывает его в хранилище Azure (не SQL, но сопоставимо), а затем я хочу сгенерировать новое событие для вызова второго запроса для чтения всех предсказанных значений времени из таблицы   -  person Carlo    schedule 15.05.2013


Ответы (1)


Во-первых, я предполагаю, что вы используете StreamInsight до версии 2.1, основываясь на использовании вами термина «выходной адаптер».

Из того, что вы опубликовали, я настоятельно рекомендую вашим адаптерам выполнять либо ввод, либо вывод, но не то и другое. Это снижает сложность, упрощает реализацию, и, в зависимости от того, как вы написали адаптер, теперь у вас есть фрагмент кода, который можно повторно использовать в вашем решении.

Если вы хотите отправлять данные из StreamInsight в механизм прогнозирования нейронной сети, для этого вам потребуется написать выходной адаптер. Затем я бы создал входной адаптер, который будет получать результаты от механизма прогнозирования нейронной сети и помещать данные в очередь в StreamInsight. После создания потока из входного адаптера механизма прогнозирования нейронной сети вы можете использовать динамическую композицию запросов, чтобы поделиться потоком с выходным адаптером хранилища Windows Azure и вашим следующим запросом.

Если ваш механизм прогнозирования нейронной сети может «проталкивать» данные на ваш входной адаптер, это будет правильным способом. Если нет, вам придется провести опрос для получения результатов.

Это намного больше, но трудно углубиться в подробности без подробностей.

Надеюсь это поможет.

person TXPower275    schedule 15.05.2013
comment
Спасибо за ваш ответ, но я забыл сказать, что есть еще один запрос, который обновляет таблицу прогнозов, этот запрос измеряет реальное время цикла задачи. Фактический прогноз порядка зависит от задач в новом заказе и отложенных задач из других предыдущих заказов, которые все еще выполняются. Но я думаю, что идея позволить моей нейронной сети передавать новые данные во входной адаптер — это то же самое, что и выходной адаптер, передающий эти данные. Я думаю, что это решение. Как я мог это сделать, потому что опрос неэффективен. Нужно ли мне работать с наблюдаемым классом нейронной сети и входным адаптером наблюдателя? - person Carlo; 15.05.2013
comment
И да, я использую StreamInsight версии 2.1. - person Carlo; 15.05.2013
comment
Если вы используете StreamInsight 2.1, я бы предложил использовать более новую модель источников и приемников Rx. Для него проще развиваться. Помните, что источник Observable — это push, а источник Enumerable — это pull. То, как вы реализуете свой код для связи с механизмом прогнозирования нейронной сети, зависит от того, как он работает, и/или API, которые он предоставляет для работы с ним. - person TXPower275; 15.05.2013
comment
Я бы рассмотрел создание приемника Observable, который позволяет StreamInsight отправлять данные в ваш механизм прогнозирования нейронной сети, а затем источник Observable, который механизм прогнозирования нейронной сети отправляет в StreamInsight. - person TXPower275; 15.05.2013
comment
Если этот ответ отвечает на ваш вопрос, пожалуйста, отметьте его как ответ. - person TXPower275; 15.05.2013