通过Apache Spark从Cassandra缓慢计算> 10亿行

时间:2017-09-06 10:51:20

标签: scala apache-spark cassandra spark-cassandra-connector

我遇到一个问题,从cassandra表中计算一个简单的行。我使用spark-cassandra-connector从cassandra中获取数据:

scalaVersion := "2.11.11"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.0"
libraryDependencies += "com.datastax.spark" % "spark-cassandra-connector_2.11" % "2.0.5"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.2.0"

使用此代码:

import org.apache.spark.{SparkConf, SparkContext}
import com.datastax.spark.connector._
import com.datastax.spark.connector.cql.CassandraConnectionFactory

object Init {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf()
      .set("spark.cassandra.connection.host", "host")
//      .set("spark.cassandra.input.split.size_in_mb", "65000")
      .setAppName("spark2Cassandra")
      .setMaster("local[*]")

    val sparkContext = new SparkContext(sparkConf)

    val table = sparkContext.cassandraTable("keyspace", "table")
    println(table.count())
  }
}

当我运行此代码时,我得到大约2k个分区和40个并行任务,大约需要1个小时。 在这种情况下:1 billion for 5-6 mins只需5-6分钟。但为什么呢?

我应该怎样做才能减少时间?

不幸的是,这个Spark: PySpark + Cassandra query performance并没有就我的问题给出答案。我也尝试使用cassandraCount()但是需要大约一个小时

0 个答案:

没有答案