【问题标题】:How does DataStax Spark Cassandra connector create SparkContext?DataStax Spark Cassandra 连接器如何创建 SparkContext?
【发布时间】:2017-02-13 13:39:06
【问题描述】:

我已经成功运行了以下 Spark 测试程序。在这个程序中,我注意到 SparkContext 类中的“cassandraTable”方法和“getOrCreate”方法。但我无法在此类的 Spark Scala API 文档中找到它。我在理解这段代码时缺少什么?我试图了解当 Datastax 连接器在 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

【问题讨论】:

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


    【解决方案1】:

    没有什么不同。 Spark 仅支持一个活动的SparkContext,而getOrCreate 是在the companion object 上定义的方法:

    此函数可用于获取或实例化 SparkContext 并将其注册为单例对象。因为每个 JVM 只能有一个活动的 SparkContext,所以当应用程序可能希望共享一个 SparkContext 时,这很有用。

    此方法允许不传递 SparkConf(仅在检索时很有用)。

    总结一下:

    • 如果存在活动上下文,则返回它。
    • 否则它会创建一个新的。

    cassandraTable 是使用implicit conversion 暴露的SparkContextFunctions 的一种方法。

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2016-08-11
      • 2017-03-04
      • 2020-10-17
      • 2015-05-24
      • 2020-02-12
      • 2019-08-05
      • 2015-08-16
      • 2016-05-25
      相关资源
      最近更新 更多