页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。
评论: 校验 - 要记住的要点 5

为了初始化一个 Spark Streaming 程序,一个 StreamingContext 对象必须要被创建出来,它是所有的 Spark Streaming 功能的主入口点。

一个 StreamingContext 对象可以从一个 SparkConf 对象中创建出来。

代码块
languagescala
themeEclipse
import org.apache.spark._
import org.apache.spark.streaming._

val conf = new SparkConf().setAppName(appName).setMaster(master)
val ssc = new StreamingContext(conf, Seconds(1))

这个 appName 参数是展示在集群用户界面上的你的应用程序的名称。 master 是一个  Spark, Mesos or YARN cluster URL ,或者一个特殊的 "local[*]" 字符串运行在本地模式下。在实践中,在一个集群上运行时,你不会想在程序中硬编码 master,而是使用 spark-submit 启动应用程序,并且接收这个参数。然而,对于本地测试和单元测试,你可以传递 "local[*]" 去运行 Spark Streaming 过程(检测本地系统中内核的个数)。请注意,这内部创建了一个 SparkContext (所有 Spark 功能的出发点),它可以像这样被访问 ssc.sparkContext

这个批处理间隔(batch interval)必须根据您的应用程序和可用的集群资源的等待时间要求进行设置。详情请参阅 优化指南 部分。

一个 StreamingContext 对象也可以从一个现有的 SparkContext 对象中创建出。

代码块
languagescala
themeEclipse
import org.apache.spark.streaming._

val sc = ...                // existing SparkContext
val ssc = new StreamingContext(sc, Seconds(1))

一个 context 定义之后,你必须做以下几个方面。

  1. 通过创建输入 DStreams 定义输入源。
  2. 通过应用转换和输出操作 DStreams 定义流计算(streaming computations)。
  3. 开始接收数据,并用 streamingContext.start() 处理它。
  4. 等待处理被停止(手动停止或者因为任何错误停止)使用 StreamingContext.awaitTermination() 。
  5. 该处理可以使用 streamingContext.stop() 手动停止。

要记住的要点 : 

  1. 一旦一个 context 已经启动,将不会有新的数据流的计算可以被创建或者添加到它。
  2. 一旦一个 context 已经停止,它不会被重新启动。
  3. 同一时间内在 JVM 中只有一个 StreamingContext 可以被激活。
  4. 在 StreamingContext 上的 stop() 同样也停止了 SparkContext 。为了只停止 StreamingContext ,设置 stop() 的可选参数,名叫 stopSparkContext 为 false 。
  5. 一个 SparkContext 可以被重新用于创建多个 StreamingContexts,只要是当前的 ,只要前一个 StreamingContext 被停止(不停止 SparkContext)之前创建下一个StreamingContext 就可以。 

 

  1.  在下一个StreamingContext 被创建之前停止(不停止 SparkContext)。