java - 如何在 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) );
谢谢
解决方案
在调用操作之前,不会执行 Spark RDD 转换。在你的情况下,stage_y
也stage_z
不会被执行。您必须调用一个操作,指定在这些转换之后要执行的操作。
一旦通过stage_y
RDD 调用的动作完成,下面的代码就会被执行。
希望能帮助到你。
推荐阅读
- c - c语言中的luhns算法
- c++ - 为什么函数参数的行为类似于变量声明?
- javascript - 如何在提交表单之前使用 javascript 向表单添加值?
- jenkins - 使用 jenkins 部署的应用程序无法访问临时 io 服务器
- token - 使用 Insomnia 和 awscognitotoken 插件获取 Cognito 令牌
- c - 如何垃圾收集 Idris/C 结构?
- python - 使用 python 和 matlab 写入二进制文件的不同结果
- forms - 为什么此表单文件上传不起作用?
- matlab - 二维网格中点的分布,最小化网格中所有其他点到这些点的平均距离
- laravel - Laravel 搜索过滤不能单过滤