#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;