首页 > 解决方案 > 如何在 RDD 管道转换操作后执行代码

问题描述

在我的 sparkJob 中,我执行了几个转换和聚合操作。我需要在管道操作之前和之后通知服务。具体来说,参考下面的代码,我需要在 RDD 中的所有文档上完成“管道操作 1”之后和“管道操作 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_y

JavaRDD<Document> stage_z = stage_y.
                pipe( "pipe operation 2 to another external process" ).
                map(r -> someMapOps(r) );

谢谢

标签: javaapache-spark

解决方案


在调用操作之前,不会执行 Spark RDD 转换。在你的情况下,stage_ystage_z不会被执行。您必须调用一个操作,指定在这些转换之后要执行的操作。

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

希望能帮助到你。


推荐阅读