StreamingContext詳解

豐澤發表於2018-10-12

一、 StreamingContext詳解

有兩種建立StreamingContext的方式:

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

StreamingContext,還可以使用已有的SparkContext來建立
val sc = new SparkContext(conf)
val ssc = new StreamingContext(sc, Seconds(1));
複製程式碼

appName,是用來在Spark UI上顯示的應用名稱。master,是一個Spark、Mesos或者Yarn叢集的URL,或者是local[*]。

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

二、 StreamingContext詳解

一個StreamingContext定義之後,必須做以下幾件事情:

1、通過建立輸入DStream來建立輸入資料來源。

2、通過對DStream定義transformation和output運算元操作,來定義實時計算邏輯。

3、呼叫StreamingContext的start()方法,來開始實時處理資料。

4、呼叫StreamingContext的awaitTermination()方法,來等待應用程式的終止。可以使用CTRL+C手動停止,或者就是讓它持續不斷的執行進行計算。

5、也可以通過呼叫StreamingContext的stop()方法,來停止應用程式。

需要注意的要點:

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)停止,再建立下一個即可。