嗨,夥計們,
我有一個問題。這不是關鍵,但很煩人。
我們實現了一個火花結構化流媒體應用程序。
這個應用程序將會觸發線Azure數據工廠(每8分鍾)。好的,這個設置聽起來有點奇怪,這不是真的流,同意了。但源係統不是實時的,我們想要實現一個流POC,看看工藝深有關。這是所有。
所以,這“流筆記本”跑24/7。主要是在一個穩定的方式。但有時一個運行加載到TimeoutException是這樣的:
java . util . concurrent。TimeoutException:流執行線程流(id = 26 c3f28c - 9 d17 - 486 a - 81——df418c42cd74 runId = d30a8fe8 - 3 -美聯儲- 4475 - 8233 - 4577 - b775bb19]未能阻止15000毫秒內(由spark.sql.streaming.stopTimeout指定)。看到什麼原因被流查詢線程中執行。
這個異常是明確的。這正試圖獲得加載到存儲賬戶,檢查點位置。超時,因為另一個負載沒有星期幾工作和鎖定檢查點,。一般來說這個流媒體應用程序不需要超過1 - 2分鍾。
但是一些邊界情況需要超過14分鍾和其他模塊加載,將開始在這。
司機日誌我做了一些調查,發現一個奇怪的行為到log4j(見附加log4j_snippet。日誌,時間間隔為99秒時間嗎?)
在這些邊界情況我有很多這樣的條目。
ClusterLoadAvgHelper……這是什麼意思?什麼好主意嗎?
我難過的時候,我自己的小業務邏輯和連接到SQL Azure數據庫(下沉)隻需要1 - 2分鍾。在這個邊緣情況下整個處理時間跑到14分鍾超過10分鍾ClusterLoadAvgHelper東西是必要的。
目前我也不知道為什麼我的集群運行胡作非為。
像我難過一開始並不是關鍵,我們不要錯過任何數據到SQL數據庫。但它很煩人:)。
有什麼想法就好了。
提前謝謝,
馬庫斯
數據來源:汽車加載器這樣的機製(https://docs.m.eheci.com/spark/latest/structured-streaming/auto-loader.html)
水槽:SQL Azure數據庫
設置
語言:Python3
磚運行時:8.3(包括Apache火花3.1.1,Scala 2.12)
司機/工人類型:Standard_E4ds_v4
集群模式:標準
最小工作人員:1 / Max工人:10
在- - - - - - - - -流筆記本片段
#(1)初始化流數據幀
streaming_df = spark.readStream.format \ (“cloudFiles”)
.option (“cloudFiles。形式at", extension) \
. schema \(模式)
.load (streaming_path) #定位存儲賬戶
#(2)開始流
查詢= (
streaming_df
.writeStream
.foreachBatch (process_batch_for_streaming) #沉入SQL Azure數據庫
.trigger(一旦= True)
checkpoint_path .option (“checkpointLocation”)
.start ()
)
————流筆記本片段