如何在Rharop中捕获rmr map中的R背景代码

时间:2013-12-06 06:25:14

标签: r hadoop mapreduce

我是R Hadoop的新手。我可以用Hadoop运行rmr包的map reduce功能。基本上在后台R中运行此映射减少Java中的代码。这意味着R在Java中转换此R map reduce代码,因此我可以在运行map reduce时获取java后台代码。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

在Rhadoop中,R没有将R Map Reduce代码转换为java.Rhadoop提供了MapReduce接口; mapper和reducer可以用R代码描述,然后从R中调用。

  

Rhadoop包将使用Hadoop向Hadoop集群提交R代码   streaming.Hadoop streaming是Hadoop附带的实用程序   分配。该实用程序允许您创建和运行Map / Reduce作业   使用任何可执行文件或脚本作为映射器和/或reducer。

您可以通过GitHub中的Rhadoop程序包代码来了解这一点。

RHadoop软件包使用R中的 System 命令提交hadoop流式传输作业。 您可以从RMR包中的R scipt了解这一点。该streaming.R中的代码如下所示。

  final.command =
    paste(
      hadoop.command, 
      stream.mapred.io,  
      if(is.null(backend.parameters)) ""
      else
        do.call(paste.options, backend.parameters), 
      input, 
      output, 
      mapper, 
      combiner,
      reducer, 
      image.cmd.line, 
      m.fl, 
      r.fl, 
      c.fl,
      input.format.opt, 
      output.format.opt, 
      "2>&1")
  if(verbose) {
    retval = system(final.command)
    if (retval != 0) stop("hadoop streaming failed with error code ", retval, "\n")}
  else {
    console.output = tryCatch(system(final.command, intern=TRUE), 
                              warning = function(e) stop(e)) 
    0}}