# 初始化StreamingContext
為了初始化Spark Streaming程序,一個StreamingContext對象必需被創建,它是Spark Streaming所有流操作的主要入口。一個[StreamingContext](https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.streaming.StreamingContext)
對象可以用[SparkConf](https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.SparkConf)對象創建。
```scala
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`表示你的應用程序顯示在集群UI上的名字,`master`是一個[Spark、Mesos、YARN](https://spark.apache.org/docs/latest/submitting-applications.html#master-urls)集群URL
或者一個特殊字符串“local[*]”,它表示程序用本地模式運行。當程序運行在集群中時,你并不希望在程序中硬編碼`master`,而是希望用`spark-submit`啟動應用程序,并從`spark-submit`中得到
`master`的值。對于本地測試或者單元測試,你可以傳遞“local”字符串在同一個進程內運行Spark Streaming。需要注意的是,它在內部創建了一個SparkContext對象,你可以通過` ssc.sparkContext`
訪問這個SparkContext對象。
批時間片需要根據你的程序的潛在需求以及集群的可用資源來設定,你可以在[性能調優](../performance-tuning/README.md)那一節獲取詳細的信息。
可以利用已經存在的`SparkContext`對象創建`StreamingContext`對象。
```scala
import org.apache.spark.streaming._
val sc = ... // existing SparkContext
val ssc = new StreamingContext(sc, Seconds(1))
```
當一個上下文(context)定義之后,你必須按照以下幾步進行操作
- 定義輸入源;
- 準備好流計算指令;
- 利用`streamingContext.start()`方法接收和處理數據;
- 處理過程將一直持續,直到`streamingContext.stop()`方法被調用。
幾點需要注意的地方:
- 一旦一個context已經啟動,就不能有新的流算子建立或者是添加到context中。
- 一旦一個context已經停止,它就不能再重新啟動
- 在JVM中,同一時間只能有一個StreamingContext處于活躍狀態
- 在StreamingContext上調用`stop()`方法,也會關閉SparkContext對象。如果只想僅關閉StreamingContext對象,設置`stop()`的可選參數為false
- 一個SparkContext對象可以重復利用去創建多個StreamingContext對象,前提條件是前面的StreamingContext在后面StreamingContext創建之前關閉(不關閉SparkContext)。
- Introduction
- 快速上手
- Spark Shell
- 獨立應用程序
- 開始翻滾吧!
- RDD編程基礎
- 基礎介紹
- 外部數據集
- RDD 操作
- 轉換Transformations
- map與flatMap解析
- 動作Actions
- RDD持久化
- RDD容錯機制
- 傳遞函數到 Spark
- 使用鍵值對
- RDD依賴關系與DAG
- 共享變量
- Spark Streaming
- 一個快速的例子
- 基本概念
- 關聯
- 初始化StreamingContext
- 離散流
- 輸入DStreams
- DStream中的轉換
- DStream的輸出操作
- 緩存或持久化
- Checkpointing
- 部署應用程序
- 監控應用程序
- 性能調優
- 減少批數據的執行時間
- 設置正確的批容量
- 內存調優
- 容錯語義
- Spark SQL
- 概述
- SparkSQLvsHiveSQL
- 數據源
- RDDs
- parquet文件
- JSON數據集
- Hive表
- 數據源例子
- join操作
- 聚合操作
- 性能調優
- 其他
- Spark SQL數據類型
- 其它SQL接口
- 編寫語言集成(Language-Integrated)的相關查詢
- GraphX編程指南
- 開始
- 屬性圖
- 圖操作符
- Pregel API
- 圖構造者
- 部署
- 頂點和邊RDDs
- 圖算法
- 例子
- 更多文檔
- 提交應用程序
- 獨立運行Spark
- 在yarn上運行Spark
- Spark配置
- RDD 持久化