2017-01-29 4 views
0

스트림은 내가 아래와 같이 사용자 정의 연산자를 작성 이후 필요한 것은 자바 API를사용하여 Java 사용자 정의 연산자가 나는 사용자 정의 자바 연산자 withing에의 밑받침을 사용하는 방법에 잠시 지금 찾고있다

스트림 .. .

public class Test extends AbstractOperator { 
private int i; 
private int num; 
@Override 
public synchronized void initialize(OperatorContext context) throws Exception { 
super.initialize(context); 
i = 0; .... 

나는 아래처럼 사용하려면 ....

 Topology topology = new Topology("toplogy_test"); 
     TStream<String> inDataFileName = ... 
//call the "Test" operator here 

답변

0

다음을 수행하여 토폴로지 API에서 자바 연산자/C++ 연산자를 호출 할 수 있습니다 :

  1. 자바 연산자의 툴킷 추가

    SPL.addToolkit (토폴로지, 새로운 파일 ("/ 홈/streamsadmin/myTk을"));

  2. 는 SPL 스트림으로 들어오는 스트림 변환 :

    StreamSchema rstringSchema = Type.Factory.getStreamSchema("tuple<rstring rstring_attr_name>"); 
    
    SPLStream splInputStream = SPLStreams.convertStream(inDataFileName, new BiFunction<String, OutputTuple, OutputTuple>(){ 
    
        @Override 
        public OutputTuple apply(String input_string, OutputTuple output_rstring) { 
        output_rstring.setString("rstring_attr_name", input_string); 
        return output_rstring; 
        }}, rstringSchema); 
    
  3. 운영자 호출 :

    SPLStream splOutputStream = SPL.invokeOperator ("OperatorNamespace :: YourOperatorName를"splInputStream, rstringSchema 새로운 해시 MAP ());

당신은 여기에 대한 자세한 정보를 찾을 수 있습니다 : 당신이 스트림 토폴로지를 작성하는 토폴로지 API를 사용하여 생각하는 경우

보조 노트에 http://ibmstreams.github.io/streamsx.documentation/docs/4.2/java/java-appapi-devguide/#integrating-spl-operators-with-the-java-application-api

이, 그때는 쓰기 쉽다 정규 Java 클래스이며 Topology API에서 직접 호출합니다. 예를 들어

는 :

MyJavaCode someObj = new MyJavaCode(); 

Topology topology = new Topology("MyTopology"); 
TStream<String> inDataFileName = ... 
inDataFileName.transform(new Function<String, String>(){ 
     @Override 
     public String apply(String word) { 
      return someObj.someFunction(word); 
     } 
    }); 

여기에 유일한 요구 사항은 자바 클래스는 Serializable을 구현해야한다는 것입니다.

+0

someObj.someFunction (word),이 함수는 웹 서비스 호출 또는 JDBC 삽입 호출 일 수 있습니까? –

+0

예, 함수는 아무 것도 할 수 있습니다. 필자는이 접근 방식을 사용하여 Topology API로 JSON 구문 분석을 스트리밍하기 위해 GSON 라이브러리를 랩핑했습니다. 중요한 점은 클래스가 Serializable이고 토폴로지 API에 다시 전달되는 객체가 직렬화 될 수 있는지 확인하는 것입니다. –