我想输出火花和火花流卡夫卡完全一次。但是,正如文档所述, “输出操作(如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卡夫卡,使事务提交。
感谢