DataStax Spark Cassandra 连接器如何创建 SparkContext?
How does DataStax Spark Cassandra connector create SparkContext?
我运行以下Spark测试程序成功。在这个程序中,我注意到 SparkContext class 中的 "cassandraTable" 方法和 "getOrCreate" 方法。但是我无法在这个 class 的 Spark Scala API 文档中找到它。我在理解这段代码时缺少什么?我试图了解当 Datastax Connector 在 sbt 中时这个 SparkContext 有何不同。
代码 -
import org.apache.spark.{SparkContext, SparkConf}
import com.datastax.spark.connector._
object CassandraInt {
def main(args:Array[String]){
val SparkMasterHost = "127.0.0.1"
val CassandraHost = "127.0.0.1"
val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", CassandraHost)
.set("spark.cleaner.ttl", "3600")
.setMaster("local[12]")
.setAppName(getClass.getSimpleName)
// Connect to the Spark cluster:
lazy val sc = SparkContext.getOrCreate(conf)
val rdd = sc.cassandraTable("test", "kv")
println(rdd.count)
println(rdd.map(_.getInt("value")).sum)
}}
我使用的 build.sbt 文件是 -
name := "Test Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0"
addCommandAlias("c1", "run-main CassandraInt")
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "2.0.0-M3"
fork in run := true
不一样。 Spark 只支持一个 active SparkContext
而 getOrCreate
是在 the companion object:
上定义的一种方法
This function may be used to get or instantiate a SparkContext and register it as a singleton object. Because we can only have one active SparkContext per JVM, this is useful when applications may wish to share a SparkContext.
This method allows not passing a SparkConf (useful if just retrieving).
总结一下:
- 如果有一个活动的上下文它returns它。
- 否则创建一个新的。
cassandraTable
是SparkContextFunctions
exposed using an implicit conversion的一个方法。
我运行以下Spark测试程序成功。在这个程序中,我注意到 SparkContext class 中的 "cassandraTable" 方法和 "getOrCreate" 方法。但是我无法在这个 class 的 Spark Scala API 文档中找到它。我在理解这段代码时缺少什么?我试图了解当 Datastax Connector 在 sbt 中时这个 SparkContext 有何不同。
代码 -
import org.apache.spark.{SparkContext, SparkConf}
import com.datastax.spark.connector._
object CassandraInt {
def main(args:Array[String]){
val SparkMasterHost = "127.0.0.1"
val CassandraHost = "127.0.0.1"
val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", CassandraHost)
.set("spark.cleaner.ttl", "3600")
.setMaster("local[12]")
.setAppName(getClass.getSimpleName)
// Connect to the Spark cluster:
lazy val sc = SparkContext.getOrCreate(conf)
val rdd = sc.cassandraTable("test", "kv")
println(rdd.count)
println(rdd.map(_.getInt("value")).sum)
}}
我使用的 build.sbt 文件是 -
name := "Test Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0"
addCommandAlias("c1", "run-main CassandraInt")
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "2.0.0-M3"
fork in run := true
不一样。 Spark 只支持一个 active SparkContext
而 getOrCreate
是在 the companion object:
This function may be used to get or instantiate a SparkContext and register it as a singleton object. Because we can only have one active SparkContext per JVM, this is useful when applications may wish to share a SparkContext.
This method allows not passing a SparkConf (useful if just retrieving).
总结一下:
- 如果有一个活动的上下文它returns它。
- 否则创建一个新的。
cassandraTable
是SparkContextFunctions
exposed using an implicit conversion的一个方法。