为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 RDD 管道转换操作后执行代码

如何在 RDD 管道转换操作后执行代码

潇潇雨雨 2021-10-13 13:58:00
在我的 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 结果保存到数据存储并运行外部进程。


查看完整回答
反对 回复 2021-10-13
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

在调用操作之前,不会执行 Spark RDD 转换。在您的情况下, thestage_ystage_z都不会被执行。您必须调用一个动作,指定在这些转换之后您想要做什么。

一旦通过stage_yRDD调用的操作完成,下面的代码将被执行。

希望能帮助到你。


查看完整回答
反对 回复 2021-10-13
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信