Hadoop流式处理作业失败,使用带有R的rmr包时出现缺少选项错误
我试图在AmazonEMR上使用Rstudio中的rmr包编写一个从R到HDFS的数据帧。 我下面的教程是 我写的代码是Hadoop流式处理作业失败,使用带有R的rmr包时出现缺少选项错误,hadoop,hadoop-streaming,rhadoop,Hadoop,Hadoop Streaming,Rhadoop,我试图在AmazonEMR上使用Rstudio中的rmr包编写一个从R到HDFS的数据帧。 我下面的教程是 我写的代码是 Sys.setenv(HADOOP_CMD="/home/hadoop/bin/hadoop") Sys.setenv(HADOOP_STREAMING="/home/hadoop/contrib/streaming/hadoop-streaming.jar") Sys.setenv(JAVA_HOME="/usr/java/latest/jre")
Sys.setenv(HADOOP_CMD="/home/hadoop/bin/hadoop")
Sys.setenv(HADOOP_STREAMING="/home/hadoop/contrib/streaming/hadoop-streaming.jar")
Sys.setenv(JAVA_HOME="/usr/java/latest/jre")
# load librarys
library(rmr2)
library(rhdfs)
library(plyrmr)
# initiate rhdfs package
hdfs.init()
# a very simple plyrmr example to test the package
library(plyrmr)
# running code localy
bind.cols(mtcars, carb.per.cyl = carb/cyl)
# same code on Hadoop cluster
to.dfs(mtcars, output="/tmp/mtcars")
我将遵循以下代码教程:
hadoop版本是Cloudera CDH5。我还适当地设置了环境变量
运行上述代码时,我得到以下错误:
> to.dfs(data,output="/tmp/cust_seg")
15/03/09 20:00:21 ERROR streaming.StreamJob: Missing required options: input, output
Usage: $HADOOP_HOME/bin/hadoop jar \
$HADOOP_HOME/hadoop-streaming.jar [options]
Options:
-input <path> DFS input file(s) for the Map step
-output <path> DFS output directory for the Reduce step
-mapper <cmd|JavaClassName> The streaming command to run
-combiner <JavaClassName> Combiner has to be a Java class
-reducer <cmd|JavaClassName> The streaming command to run
-file <file> File/dir to be shipped in the Job jar file
-inputformat TextInputFormat(default)|SequenceFileAsTextInputFormat|JavaClassName Optional.
-outputformat TextOutputFormat(default)|JavaClassName Optional.
-partitioner JavaClassName Optional.
-numReduceTasks <num> Optional.
-inputreader <spec> Optional.
-cmdenv <n>=<v> Optional. Pass env.var to streaming commands
-mapdebug <path> Optional. To run this script when a map task fails
-reducedebug <path> Optional. To run this script when a reduce task fails
-verbose
Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|resourcemanager:port> specify a ResourceManager
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.
The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]
For more details about these options:
Use $HADOOP_HOME/bin/hadoop jar build/hadoop-streaming.jar -info
Streaming Job Failed!
>to.dfs(数据,输出=“/tmp/cust\u seg”)
15/03/09 20:00:21错误流。StreamJob:缺少必需的选项:输入、输出
用法:$HADOOP\u HOME/bin/HADOOP jar\
$HADOOP_HOME/HADOOP-streaming.jar[选项]
选项:
-为映射步骤输入DFS输入文件
-Reduce步骤的输出DFS输出目录
-mapper要运行的流式处理命令
-组合器组合器必须是Java类
-还原要运行的流式处理命令
-要在作业jar文件中发送的file/dir
-inputformat文本inputformat(默认)| SequenceFileAsTextInputFormat | JavaClassName可选。
-outputformat文本outputformat(默认)| JavaClassName可选。
-分区器JavaClassName可选。
-numReduceTasks可选。
-inputreader可选。
-cmdenv=可选。将env.var传递给流式处理命令
-mapdebug可选。在映射任务失败时运行此脚本
-ReducedBug可选。在reduce任务失败时运行此脚本
-冗长的
支持的通用选项包括
-conf指定一个应用程序配置文件
-D使用给定属性的值
-指定一个namenode
-jt指定一个ResourceManager
-文件指定要复制到map reduce群集的逗号分隔文件
-libjar指定要包含在类路径中的逗号分隔的jar文件。
-归档文件指定在计算机上未归档的逗号分隔归档文件。
一般的命令行语法是
bin/hadoop命令[genericOptions][commandOptions]
有关这些选项的更多详细信息:
使用$HADOOP_HOME/bin/HADOOP jar build/HADOOP-streaming.jar-info
流作业失败!
我想不出这个问题的解决办法。如果有人能快速提供帮助,我们将不胜感激。错误是由于代码中未正确设置
HADOOP\u STREAMING
环境变量而导致的。您应该指定完整路径和jar文件名。下面的R代码对我来说很好
R代码(我正在使用hadoop 2.4.0)
希望这有帮助
Sys.setenv("HADOOP_CMD"="/usr/local/hadoop/bin/hadoop")
Sys.setenv("HADOOP_STREAMING"="/usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar")
# load librarys
library(rmr2)
library(rhdfs)
# initiate rhdfs package
hdfs.init()
# a very simple plyrmr example to test the package
library(plyrmr)
# running code localy
bind.cols(mtcars, carb.per.cyl = carb/cyl)
# same code on Hadoop cluster
to.dfs(mtcars, output="/tmp/mtcars")
# list the files of tmp folder
hdfs.ls("/tmp")
permission owner group size modtime file
1 -rw-r--r-- manohar supergroup 1685 2015-03-22 16:12 /tmp/mtcars