Структурированная потоковая передача - показатели в Графане
Я использую структурированную потоковую передачу для чтения данных из 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
который может получить всю эту информацию за один проход, который, вероятно, может быть использован для отправки в некоторый сборщик показателей.