2017-12-05 6 views
0

문자열을 사용하여 코딩 부분으로 뭔가를 시도하고 아래 코드를 생각해 냈습니다. 코드 구문 문제를 도와주세요.KStream 호환되지 않는 유형

두 번째 KStream 문에서
KStreamBuilder builder = new KStreamBuilder(); 
KStream<String, String> textlines = builder.stream("INTOPIC"); 
KStream<String, String> mstream = textlines 
    .foreach(new ForeachAction<String, String>(){ 
     public void apply(String key, String value){ 
      String str=value.replace("[",""); 
      for(int y=0; y<str.length(); y++){ 
       //System.out.print(str.charAt(y)); 
      } 
      //System.out.print("\n"); 
     } 
    }); 
mstream.to("OUTTOPIC"); 

이 호환되지 않는 유형을 보여주고있다 ..... 는 내가 작업 할 논리를 대체 할 변수를 textlines에 영향을해야합니다. 미리 감사드립니다.

답변

1

foreach의 결과는 void이고 다음은 KStream이 아닙니다. 당신이 데이터를 변환하고 싶은 경우에, 당신은 ... 대신 map를 사용할 필요가

코드 모양 방법 (당신이하지 않은 경우뿐만 아니라 키를 변경해야하는 경우 특히 - 다음 변형 참조) 다음

KStreamBuilder builder = new KStreamBuilder(); 
KStream<String, String> textlines = builder.stream("INTOPIC"); 
KStream<String, String> mstream = textlines 
    .map((key, value) -> new KeyValue<>(key, value.replace("[","")))); 
mstream.to("OUTTOPIC"); 

또는 당신이 (더 나은 실행이 발생합니다) 다음과 같이 라인 3-4을 대체 할 수

KStream<String, String> mstream = textlines 
    .mapValues(value -> value.replace("[","")); 
+0

유 그냥 코드를 추가 한 제대로 –

+1

을 이해 above..i을 didnt 나에게 편집 된 코드를 보낼 수 그것을 보여주기 위해, 그러나 나는 r에 코딩으로 점프하기 전에 추천한다. ead documentation (https://docs.confluent.io/current/streams/index.html) - Kafka Streams는 개념적으로 간단하지만 기초를 먼저 알아내는 것이 더 낫다. –

+0

고마워. .. 그것은 나를 위해 일했다 .. 그리고 또 하나의 질문은 "KStream "의 키로 표시되는 null을 어떻게 제거 할 수 있는가입니다. –