我用:
- cassandra 2.1.12 - 3 个节点
- 火花 1.6 - 3 个节点
- 火花卡桑德拉连接器 1.6
我在 Cassandra 中使用令牌(不是 vnodes)。
我正在编写一个从 Cassandra 表中读取数据并显示其计数表的简单工作,该表有大约 7000 万行,并且需要 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 分钟,我认为任何改进建议都太高了