我想輸出火花和火花流卡夫卡完全一次。但是,正如文檔所述, 「輸出操作(如foreachRDD)至少具有一次語義,也就是說,轉換後的數據可能在工作人員失敗的情況下不止一次地寫入外部實體。」
要執行事務性更新,spark建議使用批處理時間(在foreachRDD中可用)和RDD的分區索引來創建標識符。此標識符唯一標識流式傳輸應用程序中的blob數據。代碼如下:火花輸出到卡夫卡完全一次
dstream.foreachRDD { (rdd, time) =>
rdd.foreachPartition { partitionIterator =>
val partitionId = TaskContext.get.partitionId()
val **uniqueId** = generateUniqueId(time.milliseconds, partitionId)
// use this uniqueId to transactionally commit the data in partitionIterator
}
}
但如何使用UNIQUEID卡夫卡,使事務提交。
感謝