在我的 sparkJob 中,我执行了几个转换和聚合操作。我需要在管道操作之前和之后通知服务。具体来说,参考下面的代码,我需要在“管道操作1”对RDD中的所有文档完成后,“管道操作2”开始之前进行服务调用。JavaRDD<Document> stage_y = stage_x. map(r -> someRddOperation(r) ). pipe( "pipe operation 1 to external process" ). map(r -> someMapOps(r) );// execute something before processing stage_yJavaRDD<Document> stage_z = stage_y. pipe( "pipe operation 2 to another external process" ). map(r -> someMapOps(r) );
2 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
在 Spark 转换中是惰性求值的,它们返回另一个 RDD 而不运行实际计算。逻辑和物理执行计划是通过操作操作(可能是计数操作或将转换后的数据保存到数据存储)创建的。
此外,两个映射转换可能会创建一个组合执行计划,因此您无法区分哪个操作首先执行。
如果您确实需要在特定阶段调用外部进程,您可以考虑将中间 rdd 结果保存到数据存储并运行外部进程。
添加回答
举报
0/150
提交
取消