2017-08-25 167 views
0

我有一個簡單的工作,觸發= 15秒,Source = kafka和Sink = S3。是否可以找到從卡夫卡下載郵件花了多少時間?或者說,如果我有Sink = Console,它會將驅動程序的數據帶回,是否有可能找到從卡夫卡下載數據的時間以及將驅動程序帶回驅動器的時間?如何計算從Kafka獲取記錄的時間?

從驅動程序我寫這些查詢到S3。是否有可能瞭解在從Kafka下載觸發執行時間= 44秒時花費了多少時間?

Streaming query made progress: { 
    id : 1383g52b-8de4-4e95-a3s9-aea73qe3ea56, 
    runId : 1206f5tc-t503-44r0-bc0c-26ce404w6724, 
    name : null, 
    timestamp : 2017-08-25T01:42:10.000Z, 
    numInputRows : 99998, 
    inputRowsPerSecond : 1666.6333333333334, 
    processedRowsPerSecond : 2263.9860535669814, 
    durationMs : { 
    addBatch : 42845, 
    getBatch : 3, 
    getOffset : 68, 
    queryPlanning : 6, 
    triggerExecution : 44169, 
    walCommit : 1245 
    }, 
    stateOperators : [ ], 
    sources : [ { 
    description : KafkaSource[Subscribe[kafka_topic]], 
    startOffset : { 
     kafka_topic : { 
     2 : 20119244, 
     4 : 2, 
     1 : 20124601, 
     3 : 20113622, 
     0 : 20114208 
     } 
    }, 
    endOffset : { 
     kafka_topic : { 
     2 : 20139245, 
     4 : 20143531, 
     1 : 20144592, 
     3 : 20133663, 
     0 : 20134192 
     } 
    }, 
    numInputRows : 99998, 
    inputRowsPerSecond : 1666.6333333333334, 
    processedRowsPerSecond : 2263.9860535669814 
    } ], 
    sink : { 
    description : FileSink[s3://s3bucket] 
    } 
} 

謝謝!

+0

我通過實施一個不做任何實際處理的ForEachSink解決了這個問題,這給了我純粹的下載kafka事件的時間。 ForeachSink:https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/ForeachSink.scala –

回答

0

您應該通過查看StreamingQuery.lastProgress.durationMs找到問題的答案。

在他們的計算順序以下持續時間告訴你:

  • getOffset是從所有來源

  • getBatch獲得補償的時間來獲取流媒體數據集的時間(又名批次)從所有來源(逐一,依次)。

  • addBatch是流數據集寫入沉

這麼說的時候......

是否有可能找到它是怎麼花費的時間來下載郵件來自Kafka?

這是addBatch時間

是否可以瞭解有多少時候都不在下載卡夫卡99998行了triggerExecution的花費(因爲當這些數據被作爲RDD上執行者執行的是)= 44秒?

您必須總結addBatch持續時間從StreamingQuery.recentProgress陣列。

+0

「addBatch是時間寫流數據集到接收器「 - >所以這次包括下載消息+寫他們臨時fs +上傳到s3,如何分離出來只是從卡夫卡下載的時間? –

0

由於從卡夫卡讀取和讀取記錄的處理是流水線化的,所以很難找到準確讀取的時間。

很多時候這並不重要,因爲處理是瓶頸,而不是從卡夫卡讀取。所以真正的問題是,你爲什麼關心確切的Kafka閱讀時間?

+0

我想計算從卡夫卡下載的平均延遲時間和上傳到S3的延遲時間。我同意,因爲它是流水線模型,所以很難找到準確的時間,我只是期待着,因爲有不同的源和匯,可能有辦法告訴管道中每個組件需要花費多少時間。 –