Как рассчитать время для извлечения записей из Кафки?

У меня есть простая работа с триггером =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?

Другие вопросы по тегам