如何计算从kafka获取记录的时间?

5m1hhzi4  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(536)

我有一个简单的任务,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]
  }
}

谢谢!

5f0d552i

5f0d552i1#

由于Kafka的读取和读取记录的处理是流水线的,因此很难找到读取所需的确切时间。
很多时候,这并不重要,因为处理是瓶颈,而不是从Kafka那里阅读。所以真正的问题是,你为什么关心Kafka的确切阅读时间?

i2loujxw

i2loujxw2#

你应该通过复习找到问题的答案 StreamingQuery.lastProgress.durationMs .
按照计算顺序,以下持续时间告诉您: getOffset 是从所有源获取偏移量的时间 getBatch 是从所有源(一个接一个,按顺序)获取流数据集(也称为批处理)的时间。 addBatch 是将流数据集写入接收器的时间
说到这里。。。
有没有可能找到从Kafka下载信息花了多少时间?
那是 addBatch 持续时间(因为这是数据集作为rdd在执行器上执行的时间)
有没有可能理解从triggerexecution=44秒的情况下,从kafka下载99998行花了多少时间?
你得总结一下 addBatch 持续时间从 StreamingQuery.recentProgress 数组。

相关问题