眾所周知spark streaming是7*24小時實時執行的程式。但是如果業務場景就是某天的某個時間段需要使用呢?時間點時長不固定。這個時候就需要我們**邏輯上啟動與停止spark streaming程式了。對於spark(streaming)程式,我們通常是用shell指令碼進行啟動,而指令碼的呼叫通常是由crontab或者排程系統例如azkaban定時啟動,當然azkaban還有建立依賴等等功能。
如果我們的程式觸發條件是由某個主動行為,而非固定時間點或者是依賴某個任務呢?比如我想調個介面就可以啟動spark程式?留坑:spark的啟動
廢話不多說,上**:
//臨時實時消費程式,在rdd連續五次沒有資料那麼就自殺
var flag_null_cnt = 0
dstream.foreachrdd elseelse}}
比如以上**,邏輯很簡單,五次batch都沒有資料了,就停止程式,ssc.stop還不放心,又加了個system.exit(1)來退出jvm。
講道理,這樣做應該是可以的。但是我在這麼做的時候遇到乙個詭異的問題。
在程式應該停止的時候,yarn上顯示程式還是running,但是開啟spark ui顯示http error 500已經不存在了。日誌如下:
其實解決的方法很簡單。
相關issues
設定spark引數
spark.streaming.stopgracefullyonshutdown = ture
conf.set("spark.streaming.stopgracefullyonshutdown","true")
如切如磋,如琢如磨
有點難受的一天,以為幹了好多事情,晚上來機房補題,機房4個人,三個大佬乙個我。大佬們說的題和演算法我根本聽不懂,很挫敗。bgm my songs know what you did in the dark light em up string 我也不知道這首歌歌名為什麼沒有右括號 兩年了,我還是什麼...
Spark Streaming入門詳解
背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...
Spark Streaming 程式監控
官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...