私はsparkで解決しようとしていたこの問題をScalaに慣れていません。今までこのスカラー集計関数を2つの初期値で説明することができます
、私は唯一の私は、(一つだけ初期値で電子some-input.aggregate(Initial-value)((acc,value)=>(acc+value)))
を集約関数を見てきましたが、このプログラムは2つの初期値(0,0)を持っている。
このプログラムは算出するものである私の理解あたりとして移動平均と、これまでのカウントを追跡する。
val result = input.aggregate((0, 0))(
(acc, value) => (acc._1 + value, acc._2 + 1),
(acc1, acc2) => (acc1._1 + acc2._1, acc1._2 + acc2._2))
val avg = result._1/result._2.toDouble
空のコレクションの場合には、我々は、デフォルト値を取得し、両方がアキュムレータと値を持つように私は、foldLeft
/aggregate
に、我々は初期値を指定することを知っています部分。
しかし、この場合、2つの初期値があり、アキュムレータはタプル値にアクセスしています。 このタプルはどこに定義されていますか?
このプログラム全体を1行ずつ説明してください。
:あなたがメソッドの定義を見てみると
、あなたはそれが最初の引数リスト内の単一のパラメータを取り表示されます(私はこれが
RDD.aggregate
であると仮定しています)あなたはすでにそこに単一の 'scala.Tuple2'値があることを知っています。 –