Hadoop Streaming 实战: grep

本文介绍如何使用Hadoop Streaming功能,通过Shell命令实现对大量数据的检索操作。具体步骤包括:将待检索数据导入HDFS,利用grep命令作为Mapper进行模式匹配,并配置Job参数以适应grep的非零退出状态。

streaming支持shell 命令的使用。但是,需要注意的是,对于多个命令,不能使用形如cat; grep 之类的多命令,而需要使用脚本,后面将具体介绍。

下面示例用grep检索巨量数据:

1. 待检索的数据放入hdfs
$ hadoop fs -put localfile /user/hadoop/hadoopfile

使用方法:hadoop fs -put ...
从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。

2. 运行检索:
$ hadoop streaming -input /user/hadoop/hadoopfile -output /user/hadoop/result -mapper "grep hello" -jobconf mapre.job.name="grep-test" -jobconf stream.non.zero.exit.is.failure=false -jobconf mapred.reduce.tasks=1

说明:
-input /user/hadoop/hadoopfile : 待处理文件目录
-output /user/hadoop/result :处理结果存放目录
-mapper "grep hello" :map程序
-jobconf mapre.job.name="grep-test" :任务名
-jobconf stream.non.zero.exit.is.failure=false : map-reduce程序返回值不做判断;streaming默认的情况下,mapper和reducer的返回值不是0,被认为异常任务,将被再次执行,默认尝试4次都不是0,整个job都将失败。而grep在没有匹配结果时返回1。
-jobconf mapred.reduce.tasks=1 : reduce任务数。 此处也可配置为0,为0配置表示告诉Map/reduce框架不要创建reducer任务

3. 查看结果:
$ hadoop fs –cat /user/hadoop/result/part-00000

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值