Структурированная потоковая передача - показатели в Графане

Я использую структурированную потоковую передачу для чтения данных из Kafka и создания различных агрегированных показателей. Я включил приемник Graphite, используя metrics.properties. Я видел, что приложения в более старой версии Spark имеют потоковые связанные показатели. Я не вижу потоковых связанных показателей с Structured streaming. Что я делаю неправильно?

Например - не удается найти необработанные партии или запущенные партии или последнюю полную задержку партии.

Я включил потоковые показатели, установив:

SparkSession.builder().config("spark.sql.streaming.metricsEnabled",true)

Даже тогда я получаю только 3 метрики:

  • driver.spark.streaming.inputrate
  • driver.spark.streaming.latency
  • driver.spark.streaming.processingrate

Эти метрики имеют промежутки между ними. Также он начинает проявляться очень поздно после запуска приложения. Как получить обширные потоковые метрики для grafana?

Я проверил StreamingQueryProgress. Мы можем только программно создавать собственные показатели, используя этот. Есть ли способ, которым я могу использовать метрики, которые потоки Spark уже отправляют в раковину, о которой я упоминаю?

Ответ 1

Вы все еще можете найти некоторые из этих показателей. Запрос, который фактически запускает ленточный провод, имеет два метода: lastProgress и recentProgress

Они выставляют детали, такие как количество обработанных строк, продолжительность партии, количество входных строк в партии между прочим. Существует также метод внутри json который может получить всю эту информацию за один проход, который, вероятно, может быть использован для отправки в некоторый сборщик показателей.