Как использовать не основанное на времени окно с искровой структурой потоковой передачи данных? - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь использовать окно структурированной потоковой передачи с помощью spark и kafka.Я использую окно для данных, не основанных на времени, поэтому я получаю эту ошибку:

'Non-time-based windows are not supported on streaming DataFrames/Datasets;;\nWindow

Вот мой код:

window = Window.partitionBy("input_id").orderBy("similarity")
outputDf = inputDf\
        .crossJoin(ticketDf.withColumnRenamed("IDF", "old_IDF")) \
        .withColumn("similarity", cosine_similarity_udf(col("IDF"), col("old_IDF"))) \
        .withColumn("rank", rank().over(window)) \
        .filter(col("rank") < 10)

Поэтому я ищу подсказку или ссылкуиспользовать окно для не временных данных ...

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Действительно, окно основано только на времени ...

Для применения я избегаю использования колбы.Я долго искал систему потоковой передачи ... и теперь я использую Kafka, и она отлично подходит для моего приложения!:)

И у меня есть этот ресурс, чтобы поделиться с вами информацией о неподдерживаемых операциях со структурированной потоковой передачей: https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#unsupported-operations

0 голосов
/ 09 апреля 2019

Windows всегда нужны данные на основе времени, но Spark Structured Streaming нет.

Вы можете создать Spark Structured Streaming с помощью триггера "as_soon_as_posible" , и вы можете сгруппировать данные по окну, группа вовремя.

Ссылка: https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#window-operations-on-event-time

...