Окно (фиксированное, скользящее и т.д.) и поддержка водяных знаков в Spark SQL DSL

#apache-spark #apache-spark-sql #spark-structured-streaming

#apache-spark #apache-spark-sql #spark-структурированная потоковая передача

Вопрос:

Поддерживает ли Spark SQL (DSL, а не API) функцию управления окнами в структурированной потоковой передаче? Нечто подобное в Flink выглядит как:

 SELECT user, SUM(amount) FROM Orders GROUP BY TUMBLE(proctime,
INTERVAL '1' DAY), user
  

Единственный пример SQL, который я нашел на официальном сайте структурированной потоковой передачи, был представлен ниже, и он не включал пример функции управления окнами:

 df.createOrReplaceTempView("updates")

spark.sql("select count(*) from updates")  // returns another streaming DF
  

Ответ №1:

В Spark еще нет функций управления окнами через DSL в структурированной потоковой передаче в версии 2.4. В Apache Flink они есть, поскольку он использует анализатор SQL Apache Calcite и поскольку Flink использует SQL для потоковой передачи.

Однако эта функция может быть добавлена в будущих версиях.

Лучшие

Комментарии:

1. Спасибо за ответ, но я не думаю, что ваше утверждение о поддержке окон верно. Spark structured streaming поддерживает работу с окнами во время события (смотрите здесь: spark.apache.org/docs/latest /… ). Также поддержка окон в Calcite отличается от функции окна в модели потока данных. Я обновил заголовок вопроса, чтобы прояснить этот момент.

2. Я знаю, что у вас есть поддержка даже time и windowing, но дело в том, что вы не можете выразить эти операции через SQL DSL в Spark 2.4, как я сказал. Извините, если я не понял