Счетчик строк в Spark Структурированные потоковые Sql - PullRequest
0 голосов
/ 04 января 2019

Сценарий: работа с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...