2017-03-11 14 views
0

ScalaでFlatMapFunctionクラスを使用しているときに、型を暗黙的に指定するにはどうすればよいですか?Apache FlinkのFlatMapFunctionで型を忠実に派生させるにはどうすればいいですか?

val test = env.fromElements((0,1111),(1,2222)) 

test.flatMap(new FlatMapFunction[A,B]() { 
     override def flatMap(implicit x:A, out:Collector[B]):Unit = { 
     x => x match { 
      case (k,v) => 
      if (moveToP(v)) 
       out.write(v) 
     } 
     } 
    }) 

エラー:trait FlatMapFunctionは型パラメータをとります。

答えて

0

あなたは何を求めているのですが、とにかく答えるつもりです。

ジェネリック型でオブジェクトをインスタンス化することはできません。ストリームのタイプがDataStream[(Int, Int)]の場合、new FlatMapFunction[(Int, Int), Int]を適用する必要があります。 Scalaで

あなたはflatMapのためのラムダ式を使用することができます

test.flatMap((x, out: Collector[Int]) => { 
    x match { 
    case (k,v) => 
     if (moveToP(v)) 
     out.collect(v) 
    } 
}).print() 

やコレクターなしを:

test.flatMap(x => { 
    if (moveToP(x._2)) List(x._2) else List.empty 
}) 
+0

ありがとうございました。それが私を助けました。私はコレクターなしで2番目のアイディアに転落しませんでした。最初の例では、コレクタ型を明示的に指定する必要があり、それが複雑なものであれば、それはもっと難しくなります。 –

関連する問題