以“输出”为例;选择";在hive中作为Hadoop jar输入文件的输入
我正在试验一个名为vowpal wabbit的机器学习软件包。 要在hadoop集群上运行vowpal wabbit,建议执行以下操作:以“输出”为例;选择";在hive中作为Hadoop jar输入文件的输入,hadoop,jar,hive,hadoop-streaming,Hadoop,Jar,Hive,Hadoop Streaming,我正在试验一个名为vowpal wabbit的机器学习软件包。 要在hadoop集群上运行vowpal wabbit,建议执行以下操作: hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.3.0.jar \ -Dmapred.job.name="vw allreduce $in_directory" \ -Dmapred.map.tasks.spe
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.3.0.jar \
-Dmapred.job.name="vw allreduce $in_directory" \
-Dmapred.map.tasks.speculative.execution=true \
-Dmapred.reduce.tasks=0 \
-Dmapred.child.java.opts="-Xmx100m" \
-Dmapred.task.timeout=600000000 \
-Dmapred.job.map.memory.mb=1000 \
-input <in_directory> \
-output <out_directory> \
-file /home/produser/vowpal_wabbit/vowpalwabbit/vw \
-file /usr/lib64/libboost_program_options.so.5 \
-file /lib64/libz.so.1 \
-file /home/produser/vowpal_wabbit/cluster/runvw-yarn.sh \
-mapper /home/produser/vowpal_wabbit/cluster/runvw-yarn.sh \
-reducer NONE
hadoop-jar/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.3.0.jar\
-Dmapred.job.name=“vw allreduce$在\u目录中”\
-Dmapred.map.tasks.prospective.execution=true\
-Dmapred.reduce.tasks=0\
-Dmapred.child.java.opts=“-Xmx100m”\
-Dmapred.task.timeout=600000000\
-Dmapred.job.map.memory.mb=1000\
-输入\
-输出\
-文件/home/produser/vowpal_wabbit/vowpalwabbit/vw\
-文件/usr/lib64/libboost_program_options.so.5\
-文件/lib64/libz.so.1\
-文件/home/produser/vowpal_wabbit/cluster/runvw-warn.sh\
-mapper/home/produser/vowpal_wabbit/cluster/runvw-warn.sh\
-无减速器
其中runvw-warn.sh作为映射器,将在每台机器上调用vowpal wabbit的命令,其中包含存储在机器上的数据片段
在传入数据之前,我必须重新格式化数据。我尝试使用配置单元查询从网格中选择数据,重新格式化数据,然后将其传递给“hadoopjar”命令。但我不想在集群上存储重新格式化的数据以浪费空间。所以我不知道在“hadoopjar”命令中的“-input”选项后面应该放什么
所以我的问题是,有没有办法在“-input”命令后面加上类似“stdin”的内容?
在选择数据之后,我应该将“hadoopjar”命令放在我的配置单元查询中的什么位置
另外,我发现了“hive--ServiceJAR”,它看起来很像HadoopJAR,这有帮助吗
谢谢大家!!我几周前才开始学习hadoop和hive,所以如果您有更好的设计或解决方案,请随时告诉我。我可以重写每件事。看起来您将运行两轮Mapreduce:第一轮是Hive查询,第二轮是Mapreduce流。就我而言,要使用多轮Mapreduce作业,我们始终需要在轮之间向hdfs写入/读取数据。这就是为什么MapReduce总是被称为批处理操作
因此,您的问题的答案是否定的。您能否存储重新格式化的数据,并在作业完成后将其删除?我认为hadoop不能支持您所说的“stdin”,因为它是本地的“stdin”,但是MapReduce任务可能会在其他节点上运行。