Hadoop学习之传递命令行参数给Mapper和Reducer

49 篇文章 22 订阅 ¥9.90 ¥99.00
19 篇文章 0 订阅
本文介绍了如何在Hadoop作业中通过命令行传递参数给Mapper和Reducer。通常,命令行参数用于输入和输出路径,但通过分析源代码,作者发现可以在创建Job对象前设置自定义配置参数,然后在Mapper和Reducer的Context中通过getConfiguration()获取。如果在创建Job后设置参数,将不会传递给任务。文章还探讨了Configuration、JobConf、JobContext和Job之间的关系,揭示了为何在Job创建后修改Configuration参数无效的原因。
摘要由CSDN通过智能技术生成

       在Hadoop-1.2.1进行作业开发时,由于输入文件的特殊性,需要将日期作为参数传递到Mapper和Reducer任务。而通常情况下在使用hadoop jar运行作业时,传递的参数为输入文件路径和输出文件路径,那如何做到添加额外参数到作业中呢?仔细分析一下作业类的run方法,并结合Hadoop API可以粗略的推断出:可以在core-site.xml文件中添加参数及参数值实现向作业传递参数。但该方法比较笨拙,一是因为不同作业可能需要的参数不同,若存在多个需要参数的作业势必导致core-site.xml文件增大,二是因为这种方式不够灵活,若需要不同的参数值,则必须修改core-site.xml文件并重新启动Hadoop集群。显然在运行多个作业,规模较大的集群该方法是不太可行的。既然可以通过命令行向作业传递输入和输出目录,是否可以通过命令行向作业传递特殊参数呢?答案是肯定的。

      由于Configuration 支持以编程的方式设置和获取参数,那就可以将命令行中的参数保存在Configuration ,然后在Mapper或者Reducer任务通过Configuration 的get方法获取该参数的值。在测试该方法之前,需要确定map和reduce方法是否可以取得Configuration 对象,结合API可以得出map和reduce方法中的Context对象可以通过方法getConfiguration()得到Configuration 对象,至此似乎一切都迎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skyWalker_ONLY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值