我正在用yarn进行火花作业,我的代码用Java编写,现在我想执行一个函数,以便在工人的工作完成后在每个工人中收集一些资源。
我尝试了mapPartitions()
函数,但是在同一个工作进程中运行了许多分区,因此该函数将执行多次。
我可以实现它吗?如何实现?
代码已更新:
JavaRDD<String> sourceRDD = context.textFile(inputPath);
sourceRDD.map(doSomething()); // every worker has it's env, I want to execute a function in every worker when map() ends.
doResourceCollect(); // It runs in the final worker, so I can't get worker's env.