如何使用具有火花数据流结构的非基于时间的窗口?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用具有火花数据流结构的非基于时间的窗口?相关的知识,希望对你有一定的参考价值。
我正在尝试使用带有spark和kafka的结构化流媒体窗口。我在非基于时间的数据上使用窗口,因此我收到此错误:
'Non-time-based windows are not supported on streaming DataFrames/Datasets;;
Window
这是我的代码:
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)
所以我正在寻找一个提示或参考,以便在非基于时间的数据上使用窗口......
答案
Windows总是需要基于时间的数据,但Spark Structured Streaming
没有。
您可以使用触发器“as_soon_as_posible”创建Spark Structured Streaming
,并且可以按窗口对数据进行分组,该组是准时的。
另一答案
确实窗口只是基于时间......
对于应用,我避免避免使用烧瓶。我已经找了很长时间才能使用流媒体系统......现在我正在使用Kafka,它适用于我的应用程序! :)
我有这个资源与您分享有关结构化流媒体的不支持的操作:https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#unsupported-operations
以上是关于如何使用具有火花数据流结构的非基于时间的窗口?的主要内容,如果未能解决你的问题,请参考以下文章