1. 程式人生 > >Spark Streaming StreamingContext詳解

Spark Streaming StreamingContext詳解

一、StreamingContext的建立方式

(1)使用configuration建立

val conf = new SparkConf().setAppName(appName).setMaster(master);
val ssc = new StreamingContext(conf, Seconds(1));
  1. appName,是用來在Spark UI上顯示的應用名稱。
  2. master,是一個Spark、Mesos或者Yarn叢集的URL,或者是local[*]

(2)使用已有的SparkContext建立

val sc = new SparkContext(conf)
val ssc = new StreamingContext(sc, Seconds(1));

batch interval可以根據你的應用程式的延遲要求以及可用的叢集資源情況來設定。

二、StreamingContext的使用

(1)StreamingContext定義之後,必須做以下幾件事情:

  1. 通過建立輸入DStream來建立輸入資料來源。
  2. 通過對DStream定義transformation和output運算元操作,來定義實時計算邏輯。
  3. 呼叫StreamingContext的start()方法,來開始實時處理資料。
  4. 呼叫StreamingContext的awaitTermination()方法,來等待應用程式的終止。可以使用CTRL+C手動停止,或者就是讓它持續不斷的執行進行計算。
  5. 也可以通過呼叫StreamingContext的stop()方法,來停止應用程式。

(2)需要注意的要點

  1. 只要一個StreamingContext啟動之後,就不能再往其中新增任何計算邏輯了。比如執行start()方法之後,還給某個DStream執行一個運算元。
  2. 一個StreamingContext停止之後,是肯定不能夠重啟的。呼叫stop()之後,不能再呼叫start()
  3. 一個JVM同時只能有一個StreamingContext啟動。在你的應用程式中,不能建立兩個StreamingContext。
  4. 呼叫stop()方法時,會同時停止內部的SparkContext,如果不希望如此,還希望後面繼續使用SparkContext建立其他型別的Context,比如SQLContext,那麼就用stop(false)。
  5. 一個SparkContext可以建立多個StreamingContext,只要上一個先用stop(false)停止,再建立下一個即可。