Java sparkmap函数中的异步代码
我想将spark用于MapReduce任务。在map函数中,我使用第三方库进行计算。问题是此库异步工作,类似于:Java sparkmap函数中的异步代码,java,multithreading,asynchronous,apache-spark,mapreduce,Java,Multithreading,Asynchronous,Apache Spark,Mapreduce,我想将spark用于MapReduce任务。在map函数中,我使用第三方库进行计算。问题是此库异步工作,类似于: long id = lib.doJob(inputData); // start async job 然后我可以将侦听器附加到库以获得结果,这就是它的工作方式: lib.setListener(new Listener() { @Override public void onDone(long id) { Result result = lib.ge
long id = lib.doJob(inputData); // start async job
然后我可以将侦听器附加到库以获得结果,这就是它的工作方式:
lib.setListener(new Listener() {
@Override
public void onDone(long id) {
Result result = lib.getResult(id); // I can only get result this way
}
// ... other progress callbacks
});
所以我的问题是-我如何使用spark的map函数中的库?我想要像这样的东西:
JavaRDD<Result> results = rdd.map(new MapFuntion<Source, Result> {
public Result call(Source src) {
long id = lib.doJob(src);
// ... ?? wait while lib's job is done and get the result
return result;
}
});
javarddresults=rdd.map(新映射函数){
公共结果调用(源src){
long id=lib.doJob(src);
//等待lib的工作完成并获得结果
返回结果;
}
});
就个人而言,我会将此信息反馈给在mapPartitions
中运行整批的流媒体作业,这将是下一个合理的方法。就个人而言,我会将此信息反馈给在mapPartitions
中运行整批的流媒体作业,这将是下一个合理的方法。