我已经看到了integra R和hadoop的一些选项:RHadoop,RHipe,Hadoop Sreaming,RHive。
我在R中没有任何经验,但我在Hadoop中确实有很好的exp。我所谈论的方法可能是不可行的或别的......
但是,任何人都可以分享他们对这种方法的看法 -
我们可以使用JRI集成R和Hadoop:因为可以从java代码调用R函数(使用JRI)。 我们可以这样做:用Java编写hadoop mapreduce程序,如果我们需要R中存在的某些功能,那么在Java Mapreduce程序中调用该R-Function?
答案 0 :(得分:2)
要使其发挥作用的步骤如下:
代码:
private String[] Rargs = { "--vanilla" };
private Rengine re = null;
private REXP rn = null;
re = new Rengine(Rargs, false, null);
代码:
rn = re.eval("result<-\"Hello world\"");
if( rn != null ){
System.out.println("Result is :"+rn.toString());
}
代码:
hadoop jar HelloWorld.jar com.example.HelloWorld -files libjri.so,libR.so,libRblas.so -libjars JRI.jar -Dmapred.child.env="R_HOME=/usr/lib64/R"
您可以在-mailes参数中包含更多文件,如R文件,数据文件等,这些文件由逗号分隔,然后将传送到分布式缓存。
确保使用re.eval("sapply(\"file.R\",source)");
访问来自Java的文件.R中的函数