2016-11-04 65 views
1

有誰知道Spark如何計算其記錄數(我認爲它與批處理中的事件數相同),如此處所示?如何獲取Spark Streaming處理的記錄總數?

enter image description here

我試圖找出如何我可以遠程獲取此值(REST的API不存在在UI流選項)。

基本上我正在嘗試去獲得我的應用程序處理的記錄總數。我需要這個門戶網站的信息。

我試圖爲每個階段計算Records,但它給了我完全不同的數字,因爲它是在上面的圖片。每個階段都包含有關其記錄的信息。由於這裏

enter image description here

顯示我用這短暫的python腳本來算「inputRecords」,從每一個階段。這是源代碼:

import json, requests, urllib 
print "Get stages script started!" 
#URL REST-API 
url = 'http://10.16.31.211:4040/api/v1/applications/app-20161104125052-0052/stages/' 
response = urllib.urlopen(url) 
data = json.loads(response.read()) 

stages = [] 
print len(data) 
inputCounter = 0 
for item in data: 
     stages.append(item["stageId"]) 
     inputCounter += item["inputRecords"] 
print "Records processed: " + str(inputCounter) 

如果我理解正確的話:每個Batch具有一個Job,並且每個Job具有多個Stages,這些Stages有多個Tasks

因此對我來說,計算每個Stage的輸入是有意義的。

+0

你試過了什麼?請發佈一些示例數據和代碼,並告訴我們什麼不適合你。另外,請檢查此鏈接:stackoverflow.com/help/mcve。 – CGritton

+0

也許問題應該是「如何獲取Spark Streaming處理的記錄總數」 – maasg

回答

2

星火提供的驅動程序度量端點:

<driver-host>:<ui-port>/metrics/json 

火花流媒體應用將報告在UI和多一些可用的所有指標。您可能要查找的是:

<driver-id>.driver.<job-id>.StreamingMetrics.streaming.totalProcessedRecords: { 
value: 48574640 
}, 
<driver-id>.driver.<job-id>.StreamingMetrics.streaming.totalReceivedRecords: { 
value: 48574640 
} 

此端點可以自定義。有關信息,請參閱Spark Metrics

+1

謝謝!它確實有效,這個/ metrics/json選項對我來說是隱藏的。 –

+0

@SeverinSimko不是一個衆所周知的功能。順便說一句,如果你認爲你的問題得到解答,不要忘記接受它。另外考慮改變標題,以便未來的訪問者也可以受益...並歡迎來到SO! – maasg

相關問題