java - 集成 R 和 Hadoop(使用 JRI)

标签 java r hadoop mapreduce rjava

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

我没有任何 R 经验,但我在 Hadoop 方面有很好的经验。我正在谈论的方法可能不可行或其他......

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

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

最佳答案

实现此功能所需遵循的步骤是:

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

代码:

private String[] Rargs = { "--vanilla" };

private Rengine re = null;
private REXP rn = null;
re = new Rengine(Rargs, false, null);
  • 然后在实际映射中调用 R 或使用以下命令减少代码

代码:

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)"); 从 Java 访问 file.R 中的函数

关于java - 集成 R 和 Hadoop(使用 JRI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601421/

相关文章:

java检查双嵌套 HashMap 中的键是否存在

r - 根据 dplyr 中多个数据帧中的值将列添加到数据帧

揭示 igraph 中的交互集群

r - 将标志列合并为 R 中的单列

hadoop - 如何获取hive表、列、 View 、约束键和注释列的元数据?

hadoop - Hive Buckets——理解TABLESAMPLE(BUCKET X OUT OF Y)

c# - 尝试从.NET调用HDInsight上的Hive作业

java - 这种传递和修改 HashMap 的方式是线程安全的吗

java - SimpleDateFormat 无法解析的日期 如果语言环境为 ES,则会出现错误。推特 "Created_At"

java - 如何在 "D:\"中创建 TrueZip 存档?