2017-05-30 100 views
1

我从卡夫卡火花流应用中读取数据,并做两个动作执行火花流动作顺序

  1. 插入dstreams到HBase的表A中
  2. 更新另一个HBase的表B中

我想以确保对于dstream中的每个rdd 插入hbase表A将在hbase表B上的更新操作之前发生(以上两个动作按顺序针对每个rdd发生)

如何火花实现这个流应用

回答

0

按我的知识,你可以在下面的方式

这将在连续的方式

recordStream.foreachRDD{rdd => { //this will be Dstream RDD Records from kafka 
val record = rdd.map(line => line.split("\\|")).collect 
record.foreach {recordRDD => { //Write the code for Insert in hbase} 
record.foreach {recordRDD => { //Write the code for Update in hbase} 

希望这有助于进行执行上述任务

+0

这里,第二个foreach循环是否会在第一个foreach循环完成后才会启动 – jshweta14

+1

是的,我相信我的知识最好!!! ...... – Bhavesh

+0

谢谢!像魅力一样工作! – jshweta14

0

在单个rdd.foreach()中依次更新两个表。如果您正确处理了例外情况,它将按顺序执行。

这种行为是由它的DAG将在相同阶段中顺序执行的事实支持的。