我正在尝试使用带有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)
所以我正在寻找一个提示或参考,以便在非基于时间的数据上使用窗口......
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