Сценарий: работа с Spark Streaming в структурированном SQL. Я должен реализовать набор данных "info" о том, сколько строк я обработал в последнем "окне".
Немного кода.
val invalidData: Dataset[String] =
parsedData.filter(record => !record.isValid).map(record => record.rawInput)
val validData: Dataset[FlatOutput] = parsedData
.filter(record => record.isValid)
У меня есть два Dataset
. Но так как я работаю над потоковой передачей, я не могу выполнить .count
(ошибка: Queries with streaming sources must be executed with writeStream.start()
)
val infoDataset = validData
.select(count("*") as "valid")
но возникает новая ошибка: Append output mode not supported when there are streaming aggregations on streaming DataFrames/DataSets without watermark
и я не хочу задавать outputMode как завершенный, поскольку мне не нужен общий счет с начала, а только последняя "оконная" партия.
К сожалению, у меня нет ни одного столбца, который я мог бы зарегистрировать в качестве водяного знака для этих наборов данных.
Есть ли способ узнать, сколько строк обрабатывается в каждой итерации?
После комментария Джека я пытался реализовать StreamingQueryProgress