3

私が使う:

  1. カサンドラ 2.1.12 - 3 ノード
  2. スパーク 1.6 - 3 ノード
  3. スパーク カサンドラ コネクタ 1.6

Cassandra でトークンを使用します (vnode ではありません)。

Cassandra テーブルからデータを読み取る簡単なジョブを書いています。そのカウント テーブルを表示すると、約 7,000 万行あり、15 分かかります。

データを読み取っていて、RDD のパーティションの数を確認しているときに、大きすぎる 21000 前後のどこかにあります。この数を制御するには?

を試しましsplitCountsplit.size.in.mbsが、同じ数のパーティションが表示されます。

助言がありますか?

import org.apache.spark.{SparkContext, SparkConf} 
import com.datastax.spark.connector._
import org.apache.spark.sql.cassandra.CassandraSQLContext
import org.apache.spark.sql.cassandra._
import org.apache.spark.sql
import java.sql.DriverManager
import java.sql.Connection


object Hi {
  def main(args: Array[String])
  {
    val conf = new  SparkConf(true).set("spark.cassandra.connection.host", "172.16.4.196").set("spark.cassandra.input.split.size_in_mb","64")
    val sc = new SparkContext(conf)

    val rdd =  sc.cassandraTable("cw","usedcareventsbydatecookienew")
    println("hello world" + rdd.partitions)
    println("hello world" + rdd.count)
  }

}

これは参照用の私のコードです。nodetool compact を実行して、パーティションの数を制御できるようになりましたが、それでもプロセス全体に 6 分近くかかっています。これは高すぎると思います。

4

2 に答える 2

4

spark.cassandra.input.split.sizeをお探しですか?

spark.cassandra.input.split.size デフォルト = 64。単一の Spark パーティション内のおおよその行数。値が高いほど、作成される Spark タスクが少なくなります。値を大きくしすぎると、並列処理レベルが制限される場合があります。

于 2016-04-21T07:32:43.073 に答える
0

cassandra テーブルでコンパクト コマンドを実行すると問題が解決し、spark.cassandra.input.split.size パラメータを使用して制御できるようになりました

于 2016-04-28T08:08:56.610 に答える