2015-11-09 2 views
0

Я изучаю Java Application Апи в IBM Streams, поэтому для него выглядит многообещающим. Я могу создавать топологии и запускать их в автономном режиме в распределенном режиме.Как использовать RScript-оператор с IBM Streams Java Application Api?

Теперь я пытаюсь понять, как вызвать R скрипт из Java топологии. Один из способов, я думаю, - использовать com.ibm.streams.rproject :: RScript оператор в моей топологии Java.

Вот мой полный код:

SPLStream tuples = testTupleStream(topology); 

     //tuples.print(); 
     topology.createSubmissionParameter("rCommand", "/usr/local/bin/R --vanilla"); 



     // Filter on the vi attribute, passing the value 321. 
     Map<String,Object> params = new HashMap<>(); 
     params.put("rObjects", "first, second"); 
     params.put("rScriptFileName", "./etc/print.r"); 
     params.put("streamAttributes", "number1, number2"); 

     //params.put("filter", SPL.createValue(" vi == 321 ", MetaType.BOOLEAN)); 
     SPL.createSubmissionParameter(topology, "rsample", SPL.createValue(true, MetaType.BOOLEAN), true); 

     //String toolkitRoot = "/opt/ibm/InfoSphere_Streams/4.0.1.0/toolkits"; 
     //SPL.addToolkit(tuples, new File(toolkitRoot)); 
     SPLStream int32Filtered = SPL.invokeOperator("rsampleoperator","com.ibm.streams.rproject::RScript", tuples, tuples.getSchema(), params); 
     int32Filtered.print(); 

Но когда я запускаю выше топологии, я получаю следующее сообщение об ошибке:

 09 Nov 2015 04:09:53.234 [5407] ERROR #splapptrc,J[5],P[5],rsampleoperator,spl_pe M[PEImpl.cpp:process:841] - CDISR5079E: An exception occurred during the processing of the processing element. The error is: An operator was attempting to access the data directory and no data directory has been specified.. 
09 Nov 2015 04:09:53.241 [5407] ERROR #splapptrc,J[5],P[5],rsampleoperator,spl_operator M[PEImpl.cpp:process:872] - CDISR5053E: Runtime failures occurred in the following operators: rsampleoperator. 

Можете ли вы предложить мне то, что я делаю неправильно ? Любое понимание с помощью SPL операторов в Java API поможет?

Благодаря Sudheer

ответ

0

Поскольку это Java Application API, я считаю, вы должны установить свойство каталога данных как часть свойств задания:

http://ibmstreams.github.io/streamsx.topology/doc/javadoc/com/ibm/streamsx/topology/context/JobProperties.html

свойства затем могут быть переданы в контекст, когда задание отправлено: StreamsContext.submit (com.ibm.streamsx.topology.Topology, java.util.Map)

Существует также руководство по разработке API приложений Java, лет u можете найти его здесь: http://ibmstreams.github.io/streamsx.documentation/docs/4.1/java/java-appapi-devguide/

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

Саманта

Смежные вопросы