私が使う:
- カサンドラ 2.1.12 - 3 ノード
- スパーク 1.6 - 3 ノード
- スパーク カサンドラ コネクタ 1.6
Cassandra でトークンを使用します (vnode ではありません)。
Cassandra テーブルからデータを読み取る簡単なジョブを書いています。そのカウント テーブルを表示すると、約 7,000 万行あり、15 分かかります。
データを読み取っていて、RDD のパーティションの数を確認しているときに、大きすぎる 21000 前後のどこかにあります。この数を制御するには?
を試しましsplitCount
たsplit.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 分近くかかっています。これは高すぎると思います。