Я использую водяной знак для объединения двух потоков, как вы можете видеть ниже:
val order_wm = order_details.withWatermark("tstamp_trans", "20 seconds")
val invoice_wm = invoice_details.withWatermark("tstamp_trans", "20 seconds")
val join_df = order_wm
.join(invoice_wm, order_wm.col("s_order_id") === invoice_wm.col("order_id"))
Насколько я понимаю, с помощью приведенного выше кода он будет удерживать каждый поток в течение 20 секунд.После того, как это произойдет, но, когда я даю один поток сейчас, а другой - после 20 сек, тогда и оба присоединяются.Кажется, даже после того, как водяной знак был закончен, Spark хранит данные в памяти.Я даже попробовал через 45 секунд, и это тоже стало соединением.
Это создает путаницу в моем разуме относительно водяного знака.