超时问题在我使用dropDuplicates时发生。
设置如下,
1)Spark结构化流程序从Kafka读取数据
2)由于我需要根据名为id的列对行进行重复数据删除,因此利用Spark Structured Streaming提供的dropDuplicates方法来解决此问题。这是下面的相关代码,
// df is the original dataframe got from kafka
val win_data = df.select($"value" cast "string" as "json")
.select(from_json($"json", schema) as "data")
.select("data.*")
.withWatermark("window", "1 hour")
.dropDuplicates("id", "window")
.drop("id")
实际上,此代码可以在几天内正常运行。不幸的是,读卡夫卡的超时问题肯定会发生。 如果我只是禁用dropDuplicates这一行,那么一切都会顺利进行。
那么,关于这个问题的一些建议吗?
非常感谢您的帮助。 :)