2017-12-05 12 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"); 

それは互換性のない型を示している..... 私はで動作するように置き換えるロジックをしたいし、それがテキストラインの変数に影響を与えるべきです。 ありがとうございます。

答えて

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

uはちょうど私above..i didntのために編集されたコードを送信することができますが、私は、コードを追加した適切 –

+1

を理解しますそれを表示するが、私はコーディングにジャンプする前にお勧めrにeafのドキュメント(https://docs.confluent.io/current/streams/index.html) - 概念的にはカフカストリームはシンプルですが、最初に基礎を突き止める方が良いです –

+0

ありがとうございました...それは私のために働いています..もう1つの質問は、 "KStream "のキーとして表示されているnullを取り除く方法です。 –

関連する問題