如何使用具有火花数据流结构的非基于时间的窗口?

问题描述 投票:1回答:2

我正在尝试使用带有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)

所以我正在寻找一个提示或参考,以便在非基于时间的数据上使用窗口......

pyspark apache-spark-sql spark-streaming
2个回答
0
投票

Windows总是需要基于时间的数据,但Spark Structured Streaming没有。

您可以使用触发器“as_soon_as_posible”创建Spark Structured Streaming,并且可以按窗口对数据进行分组,该组是准时的。

参考:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#window-operations-on-event-time


0
投票

确实窗口只是基于时间......

对于应用,我避免避免使用烧瓶。我已经找了很长时间才能使用流媒体系统......现在我正在使用Kafka,它适用于我的应用程序! :)

我有这个资源与您分享有关结构化流媒体的不支持的操作:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#unsupported-operations

© www.soinside.com 2019 - 2024. All rights reserved.