1

(String, Int)タプルを含む dstream があります

を試してみるとcombineByKey、パラメータを指定するように言われます: Partitioner

my_dstream.combineByKey(
      (v) => (v,1),
      (acc:(Int, Int), v) => (acc._1 + v, acc._2 + 1),
      (acc1:(Int, Int), acc2:(Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2)
    )

ただし、rdd で使用すると、正しく動作します。

 my_dstream.foreachRDD( rdd =>
      rdd.combineByKey(
        (v) => (v,1),
        (acc:(Int, Int), v) => (acc._1 + v, acc._2 + 1),
        (acc1:(Int, Int), acc2:(Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2)
      ))

このパーティショナーはどこで入手できますか?

4

1 に答える 1

1

このパーティショナーはどこで入手できますか?

自分で作成できます。Spark には 2 つのパーティショナーが付属しています:HashPartitionerRangePartitioner. デフォルトは前者です。コンストラクターを介してインスタンス化できます。必要なパーティションの数を渡す必要があります。

val numOfPartitions = // specify the amount you want
val hashPartitioner = new HashPartitioner(numOfPartitions)

my_dstream.combineByKey(
  (v) => (v,1),
  (acc:(Int, Int), v) => (acc._1 + v, acc._2 + 1),
  (acc1:(Int, Int), acc2:(Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2), 
                                        hashPartitioner
) 
于 2016-04-01T15:53:31.630 に答える