集成R和Hadoop(使用JRI)



我已经看到了一些集成R和Hadoop的选项,例如:RHadoop,RHipe,Hadoop Sreaming,RHive。

我在R中没有任何经验,但我在Hadoop中确实有很好的经验。我所说的方法可能是不可行的或其他东西......

但是任何人都可以分享他们对这种方法的看法吗——

我们可以使用 JRI

集成 R 和 Hadoop 吗:因为 R 函数可以从 java 代码(使用 JRI)调用。我们可以做这样的事情吗:用Java编写一个Hadoop MapReduce程序,如果我们需要一些R中存在的功能,那么在Java Mapreduce程序中调用R-Function?

要使其正常工作,请遵循以下步骤:

  • 在每个数据节点上安装 R with rJava。
  • 在map/reduce作业的设置函数中,使用初始化R

法典:

private String[] Rargs = { "--vanilla" };
private Rengine re = null;
private REXP rn = null;
re = new Rengine(Rargs, false, null);
  • 然后在实际映射中调用 R 或使用 Reduce 代码

法典:

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"

您可以在 -files 参数中包含更多文件,如 R 文件、数据文件等,以逗号分隔,它将被传送到分布式缓存。确保使用 re.eval("sapply("file.R",source)"); 访问文件中的函数。来自爪哇的 R

相关内容

  • 没有找到相关文章

最新更新