Как рассчитать время для извлечения записей из Кафки?
У меня есть простая работа с триггером =15 секунд, Source=Kafka и Sink=S3. Можно ли узнать, сколько времени заняло скачивание сообщений с Кафки? Или, скажем, если у меня была Sink=Console, она возвращает данные о драйвере, можно ли найти сколько времени загрузить данные из Kafka и сколько времени вернуть их обратно в драйвер?
От водителя я получаю их для запроса при записи в S3. Можно ли понять, сколько времени он потратил на загрузку 99998 строк из Kafka из triggerExecution = 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 : 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 ответа
Вы должны найти ответы на свои вопросы, просмотрев StreamingQuery.lastProgress.durationMs
,
В порядке их расчета вам сообщают следующие длительности:
getOffset
время получать смещения из всех источниковgetBatch
время для получения потоковых наборов данных (или пакетов) из всех источников (один за другим, последовательно).addBatch
время записи потокового набора данных в приемник
С этим сказал...
Можно ли узнать, сколько времени заняло скачивание сообщений с Кафки?
Это addBatch
длительность (поскольку это когда набор данных исполняется как RDD для исполнителей)
Можно ли понять, сколько времени он потратил на загрузку 99998 строк из Kafka из triggerExecution = 44 секунд?
Вы должны были бы суммировать addBatch
продолжительность от StreamingQuery.recentProgress
массив.
Поскольку чтение из Kafka и обработка прочитанных записей являются конвейерными, довольно сложно найти точное время, затраченное на чтение.
И много раз это не важно, потому что обработка является узким местом, а не чтением из Кафки. Таким образом, реальный вопрос, почему вы заботитесь о точном времени чтения Kafka?