我有一个简单的任务,trigger=15秒,source=kafka,sink=s3。有没有可能找到从Kafka下载信息花了多少时间?或者说,如果我有sink=console,它会带回驱动程序上的数据,有没有可能找到从kafka下载数据的时间和带回驱动程序的时间?
从驱动程序中,我在编写s3时得到了这些用于查询的数据。有没有可能理解从triggerexecution=44秒的情况下,从kafka下载99998行花了多少时间?
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 : 20123550,
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]
}
}
谢谢!
2条答案
按热度按时间5f0d552i1#
由于Kafka的读取和读取记录的处理是流水线的,因此很难找到读取所需的确切时间。
很多时候,这并不重要,因为处理是瓶颈,而不是从Kafka那里阅读。所以真正的问题是,你为什么关心Kafka的确切阅读时间?
i2loujxw2#
你应该通过复习找到问题的答案
StreamingQuery.lastProgress.durationMs
.按照计算顺序,以下持续时间告诉您:
getOffset
是从所有源获取偏移量的时间getBatch
是从所有源(一个接一个,按顺序)获取流数据集(也称为批处理)的时间。addBatch
是将流数据集写入接收器的时间说到这里。。。
有没有可能找到从Kafka下载信息花了多少时间?
那是
addBatch
持续时间(因为这是数据集作为rdd在执行器上执行的时间)有没有可能理解从triggerexecution=44秒的情况下,从kafka下载99998行花了多少时间?
你得总结一下
addBatch
持续时间从StreamingQuery.recentProgress
数组。