• [微笑]这篇写得不错,没有逻辑上的问题!不过咱估计不会讨小萌们喜欢。 2019-07-16
  • 陈华德的专栏作者中国国家地理网 2019-07-16
  • 西藏迎来首家民营文化企业援藏团队 2019-07-14
  • “精日亲美的真正原因”是中国的伪公知精英身上长了“洋奴依附之心”,“崇洋媚外之骨”,“汉奸文化之瘤”,这些人利用“和谐、包容”疯狂推行汉奸文化洗脑国人! 2019-07-10
  • 合肥市公立医疗机构1271种医疗服务价格公示 部分服务涨价 2019-07-10
  • 文昌至临高高速公路有望年内开工 建成后车程缩至1小时内 2019-07-02
  • 加入我们中国国家地理网 2019-06-27
  • 强势发力体育营销 世界杯中国企业改变“旁观”窘状 2019-06-25
  • “道德瘾君子”侮辱了杨女士的善良 2019-06-25
  • 郑永年:争名逐利抢流量,中国的知识分子怎么了? 2019-06-21
  • 十九大代表拉措:团结一心跟党走   2019-06-18
  • 美钢铝关税政策引发各界忧虑 2019-06-18
  • 党的十九大最重大的理论成就 2019-06-15
  • 经济日报多媒体数字报刊 2019-06-15
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-06-14
  • 欢迎来到魔据教育大数据学院,专注大数据工程师培养!
    当前位置:两肖两码中特资料网 > 学习资料 > 讲师博文 > hadoop开发必读:认识Context类的作用

    瘦骨嶙两码中特: hadoop开发必读:认识Context类的作用

    时间:2017-08-17 17:46:18作者:[!--zuozhe--]

    两肖两码中特资料网 www.mqptd.tw  

    问题提出
    1. Context能干什么?
    2. 你对Context类了解多少?
    3. Context在mapreduce中的作用是什么?
    下面我们通过来源码,来得到Context的作用:
    下面主要对Setup函数进行深入探讨:首先看下两个程序的区别:

    7-1.png

    7-2.png

    区别在于第一个程序把context这个上下文对象作为map函数的参数传到map函数中,第二个程序则是在setup函数中处理了context对象,从这个角度讲,在Map类的实例中是可以拿到Context这个上下文对象的,这一点是毋庸置疑的,不管是在类内部的哪个函数中使用都可以,既然是这样,那么讨论的重点就是map这个类中方法的声明及执行了,所以分析下Mapper类的源代码:

    7-3.png

    在mapper类中,只对这个方法进行了声明,也就是说它的子类可以重新实现这个方法,这一点很容易理解的。
    下面从源码级分析下整个mapper类的结构和hadoop在设计这个类时的巧妙之处:
    Map的主要任务就是把输入的key value转换为指定的中间结果(其实也是key value),这个类主要包括了四个函数:

    7-4.png

    Setup一般是在执行map函数前做一些准备工作,map是主要的数据处理函数,cleanup则是在map执行完成后做一些清理工作和finally字句的作用很像,下面看一下run方法:

    7-5.png

     

    这个方法调用了上面的三个函数,组成了setup-map-cleanup这样的执行序列,这一点和设计模式中的模版模式很类似,当然在这里我们也可以改写它的源码,比如可以在map的时候增加多线程,这样可以对map任务做进一步的优化,从以上的分析可以很清楚的知道setup函数的作用了。
    下面为run方法
    1.   /**
    2.    * Expert users can override this method for more complete control over the
    3.    * execution of the Mapper.
    4.    * @param context
    5.    * @throws IOException
    6.    */
    7.   public void run(Context context) throws IOException, InterruptedException {
    8.     setup(context);
    9.     try {
    10.       while (context.nextKeyValue()) {
    11.         map(context.getCurrentKey(), context.getCurrentValue(), context);
    12.       }
    13.     } finally {
    14.       cleanup(context);
    15.     }
    16.   }
    从上面run方法可以看出,K/V对是从传入的Context获取的。我们也可以从下面的map方法看出,输出结果K/V对也是通过Context来完成的。 
    那么我们上文中提到的Context对象是怎么回事呢?

    7-6.png

            原来它是mapper的一个内部类,简单的说顶级接口是为了在map或是reduce任务中跟踪task的状态,很自然的MapContext就是记录了map执行的上下文,在mapper类中,这个context可以存储一些job conf的信息,比如习题一中的运行时参数等,我们可以在map函数中处理这个信息,这也是hadoop中参数传递中一个很经典的例子,同时context作为了map和reduce执行中各个函数的一个桥梁,这个设计和java web中的session对象、application对象很相似。

    更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
    学习大数据敬请关注魔据教育微信二维码。
    魔据教育微信二维码

    【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

    全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

    在线咨询:张老师QQ 320169340

    企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

    Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

    免费在线咨询两肖两码中特资料网

    免费索取技术资料立即索取

    大数据技术交流QQ:226594285

    电话咨询010-82340234

  • [微笑]这篇写得不错,没有逻辑上的问题!不过咱估计不会讨小萌们喜欢。 2019-07-16
  • 陈华德的专栏作者中国国家地理网 2019-07-16
  • 西藏迎来首家民营文化企业援藏团队 2019-07-14
  • “精日亲美的真正原因”是中国的伪公知精英身上长了“洋奴依附之心”,“崇洋媚外之骨”,“汉奸文化之瘤”,这些人利用“和谐、包容”疯狂推行汉奸文化洗脑国人! 2019-07-10
  • 合肥市公立医疗机构1271种医疗服务价格公示 部分服务涨价 2019-07-10
  • 文昌至临高高速公路有望年内开工 建成后车程缩至1小时内 2019-07-02
  • 加入我们中国国家地理网 2019-06-27
  • 强势发力体育营销 世界杯中国企业改变“旁观”窘状 2019-06-25
  • “道德瘾君子”侮辱了杨女士的善良 2019-06-25
  • 郑永年:争名逐利抢流量,中国的知识分子怎么了? 2019-06-21
  • 十九大代表拉措:团结一心跟党走   2019-06-18
  • 美钢铝关税政策引发各界忧虑 2019-06-18
  • 党的十九大最重大的理论成就 2019-06-15
  • 经济日报多媒体数字报刊 2019-06-15
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-06-14
  • 3D数字大转轮返水 巴塞罗那ppt英文 川崎前锋浦和红钻比分 天津11选5的平台 龙之谷手游铭文 悉尼fcvs珀斯 沃尔夫斯堡队 广西快乐10分app 黑龙江十一选五走势图正好彩票 就爱棋牌游戏下载