在Hadoop上运行python程序错误集合

1.file参数,在Hadoop上执行时一定要加file 参数

hadoop jar /softs/hadoop/hadoop-2.6.0/share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar  -D stream.non.zero.exit.is.failure=false
 -mapper 1_map.py

 -file 1_map.py

 -reducer 1_reduce.py

 -file 1_reduce.py

  -input u.data
  -output /output4
 
  -jobconf mapred.reduce.tasks=3


2.要加-D参数,否则会报 PipeMapRed.waitOutputThreads(): subprocess failed with code 1错误


3.如果你是在windows下写的脚本,要

用vim打开该sh文件,输入:
:set ff
回车,显示fileformat=dos,重新设置下文件格式:
:set ff=unix
保存退出

否则会出现:没有那个文件或目录




   

Python是支持MapReduce编程模式的,但是Hadoop本身是用Java编写的,因此在Hadoop运行MapReduce任务时,Java是官方推荐的开发语言。不过,为了方便其他语言的开发者,Hadoop提供了一个名为Hadoop Streaming的工具,它允许用户使用任何可以读取标准输入和输出的程序作为MapReduce作业的Mapper和Reducer。 以下是使用Python编写MapReduce程序并在Hadoop运行的一般步骤: 1. 准备数据:首先需要准备输入数据,这些数据将被上传到HDFS(Hadoop分布式文件系统)。 2. 编写Python脚本: - 通常需要编写两个脚本,一个用于Map任务,另一个用于Reduce任务。 - Map脚本负责读取输入数据,将输入数据转换成一系列的键值对(key-value pairs)。 - Reduce脚本则对Map阶段输出的中间数据进行排序和汇总,生成最终结果。 3. 使用Hadoop Streaming运行Python脚本: - 在命令行中使用Hadoop Streaming命令提交MapReduce作业。 - 命令格式大致如下: ``` hadoop jar /path/to/hadoop-streaming.jar \ -file /path/to/map.py -mapper /path/to/map.py \ -file /path/to/reduce.py -reducer /path/to/reduce.py \ -input /path/to/input -output /path/to/output ``` - 其中,`-file`参数用于指定Map和Reduce脚本的位置,`-mapper`和`-reducer`用于指定Map和Reduce的脚本,`-input`和`-output`用于指定输入输出的HDFS路径。 4. 监控作业运行:通过Hadoop的Web界面或者命令行工具来监控MapReduce作业的运行状态,确保作业顺利完成。 5. 检查结果:作业完成后,可以在指定的输出路径检查结果文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值