Учебные пособия, предоставленные в потоковом процессоре wso2, работают не так, как ожидалось, в частности, для прогнозирования в реальном времени

#wso2 #siddhi #stream-processing #wso2sp

# #wso2 #siddhi #потоковая обработка #wso2-streaming-integrator

Вопрос:

Я пытаюсь воспроизвести учебное пособие «Составление прогнозов в реальном времени», приведенное в документации по потоковому процессору wso2, в котором предсказывается, будет ли груз соответствовать требованиям с учетом температуры и плотности

Я использую предварительно подготовленный файл PMML (Sweet.pmml), указанный в документации.

 @App:name('SugerSyrupPredictionApp')

@source(type='http', receiver.url='http://0.0.0.0:5006/SugarSyrupEP', @map(type = 'json'))
define stream SugarSyrupDataStream (temperature double, density double);

@sink(type='log', prefix='Predicted next sugar syrup shipment:')
define stream PredictedSugarSyrupDataStream (nextTemperature double, nextDensity double, decision bool);

from SugarSyrupDataStream#pmml:predict("/home/user/Sweet.pmml", temperature, density)
select *
insert into PredictedSugarSyrupDataStream;
 

Это ошибка, которую показывает Siddhi, хотя код соответствует документации.

Другое определение, такое же, как и вывод ‘define stream PredictedSugarSyrupDataStream’ (удвоение температуры, удвоение плотности, …), уже существует как ‘@sink (type =»log», prefix =»Прогнозируемая следующая отгрузка сахарного сиропа:») define stream PredictedSugarSyrupStream (удвоение следующей температуры, …, decision bool)’

Кстати, на вкладке страницы приветствия есть примерный пример (PmmlModelProcessor), который работает нормально, используя тот же синтаксис.

Комментарии:

1. Похоже, что PMML, приведенный в документации, не соответствует коду siddhi, представленному в руководстве. Вы можете следовать примерам, представленным в редакторе (PmmlModelProcessor), который охватывает ту же концепцию. Проблема здесь в том, что выходные данные, генерируемые predict(), и определение PredictedSugarSyrupDataStream отличаются из-за несоответствия PMML и кода.

Ответ №1:

Похоже, что Siddhi сбит с толку, когда 2 потока имеют одинаковую подпись; количество и тип параметров.

Я обошел эту проблему, добавив ключевое слово «as», чтобы явно сопоставить выбранные столбцы с целевым потоком. В вашем случае это должно быть что-то вроде следующего:

 select attr1 as nextTemperature, attr2 as nextDensity double, attr3 as decision bool
insert into PredictedSugarSyrupDataStream;