0
私の要件は、RDDの各グループの最大値を見つけることです。カスタム関数をscalaのRDDのreduceByKeyに渡す方法
私は以下を試しました。
scala> val x = sc.parallelize(Array(Array("A",3), Array("B",5), Array("A",6)))
x: org.apache.spark.rdd.RDD[Array[Any]] = ParallelCollectionRDD[0] at parallelize at <console>:27
scala> x.collect
res0: Array[Array[Any]] = Array(Array(A, 3), Array(B, 5), Array(A, 6))
scala> x.filter(math.max(_,_))
<console>:30: error: wrong number of parameters; expected = 1
x.filter(math.max(_,_))
^
私も以下を試しました。 オプション1:
scala> x.filter((x: Int, y: Int) => { math.max(x,y)})
<console>:30: error: type mismatch;
found : (Int, Int) => Int
required: Array[Any] => Boolean
x.filter((x: Int, y: Int) => { math.max(x,y)})
はオプション2:この権利を取得する方法
scala> val myMaxFunc = (x: Int, y: Int) => { math.max(x,y)}
myMaxFunc: (Int, Int) => Int = <function2>
scala> myMaxFunc(56,12)
res10: Int = 56
scala> x.filter(myMaxFunc(_,_))
<console>:32: error: wrong number of parameters; expected = 1
x.filter(myMaxFunc(_,_))
?
-であるとして、あなたはそれを使用することができ、
math.max
用に独自のラッパー関数を記述する必要はありませんか?フィルターを使用する理由 – stholzm