sparkstreaming執行緒數小於2時出錯!

2021-10-02 17:32:53 字數 1297 閱讀 2210

[stage 0:>                  (0 + 1) / 1][stage 10:>                 (0 + 1) / 1]20/02/11 11:32:55 warn randomblockreplicationpolicy: expecting 1 replicas with only 0 peer/s.

20/02/11 11:32:55 warn blockmanager: block input-0-1581391975600 replicated to only 0 peer(s) instead of 1 peers

sc = sparkcontext("local[2]", "stream socket test")

ssc = streamingcontext(sc, 5)

lines = ssc.sockettextstream("home.redblue-ai.com", 9999)

提交的時候用的 ./bin/spark-submit test.py localhost 9999 , 當然,首先需要執行 netcat(乙個在大多數類 unix 系統中的小工具)作為我們使用的資料伺服器(用來模擬資料流)。

一直出現如上的錯誤,後來修改了虛擬機器的核心為2,問題解決。

繼續修改提交方式 ./bin/spark-submit --master local[1] test.py localhost 9999 ,結果又出現如上的錯誤。

去看官方文件發現了這個嚴重的問題,sparkstreaming不能少於2個執行緒,至少要乙個接收乙個處理:

要記住的幾點

當在本地執行乙個 spark streaming 程式的時候,不要使用 「local」 或者 「local[1]」 作為 master 的 url。這兩種方法中的任何乙個都意味著只有乙個執行緒將用於執行本地任務。如果你正在使用乙個基於接收器(receiver)的輸入離散流(input dstream)(例如,sockets,kafka,flume 等),則該單獨的執行緒將用於執行接收器(receiver),而沒有留下任何的執行緒用於處理接收到的資料。因此,在本地執行時,總是用 「local[n]」 作為 master url,其中的 n > 執行接收器的數量(檢視 spark 屬性 來了解怎樣去設定 master 的資訊)。

將邏輯擴充套件到集群上去執行,分配給 spark streaming 應用程式的核心(core)的核心數必須大於接收器(receiver)的數量。否則系統將接收資料,但是無法處理它。

**

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...

spark streaming讀取kafka示例

spark streaming讀取kafka示例,其中 spark streaming優雅的關閉策略優化部分參考 如何管理spark streaming消費kafka的偏移量部分參考 spark向kafka中寫入資料部分參考 object demo 建立streamingcontext return...