Hadoop的Python语言封装

Gao Ang 发表于 2010年05月25日 11:38 | Hits: 245

Hadoop使 用Java语言实现,编写具体的应用业务除了借助Hadoop的Java API外,还可以使用开发者所熟悉的Python或C++等其他语言编码。在Hadoop安装路径的/src/examples/目录中,给出了 Python实现的分布式应用示例。除了将Python代码通过Jython运行时转换为jar包部署,还可借助Hadoop Streaming工具,利用可执行程序或脚本代码实现Map-Reduce中的Mapper或Reducer过程,借助标准输入输出交互数据而不需编写 Java实现类。

如何以Pythonic的方式完成Hadoop经典的WordCount词频统计工作,来自德国的开发者Michael G.Noll在博客中撰文讲解了实现方法: 在Python编码中,通过STDIN标准输入和STDOUT标准输在Map和Reduce代码之间传输数据。Python的sys.stdin方法读取 输入数据,并通过sys.stdout打印输出数据,而数据的交互处理过程交由Hadoop Streaming来处理。以同样的方式,可借助Perl、Ruby或其他动态语言完成Map-Reduce处理过程。

在Hadoop API的Python封装方面,著名音乐站点Last.fm发布了基于Python的Dumbo(小 飞象)项目,Dumbo能够帮助Python开发者更方便的编写Hadoop应用,并且Dumbo为MapReduce应用提供了灵活易用的Python API。Last.fm的开发者,同时也是Dumbo项目发起人Klaas Bosteels 认为,对于定制Hadoop应用,使用Python语言代替Java会让工作变得更有效率。

在基于Dumbo框架的应用实现中,不需模仿Michael G.Noll给出的代码将mapper和reducer存放于不同的文件中,而只需在程序中定义mapper和reducer函数,并通过语句 dumbo.run(mapper,reducer)来启动执行过程。在作者给出的Dumbo示例中, 能够将Hadoop原先60行Java源代码实现的WordCount示例,简化为Python实现的7行源代码来完成。此外,Dumbo还提供了一些易 用的功能,包括向dumbo.run()执行操作传递第三方参数。并在Dumbo项目文档中,给出了从Apache访问日志文件中进行IP统计的完整示 例,以及四个简短的应用示例。

另外一个相似的项目Happy, 则为Jython开发者使用Hadoop框架提供了便利,Happy框架封装了Hadoop的复杂调用过程,让Map-Reduce开发变得更为容易。 Happy中的Map-Reduce作业过程在子类happy.HappyJob中定义,当用户创建类实例后,设置作业任务的输入输出参数,然后调用 run()方法即可启动分治规约处理,此时,Happy框架将序列化用户的作业实例,并将任务及相应依赖库拷贝到Hadoop集群执行。目前,Happy 框架已被数据集成站点freebase.com采纳,用于进行站点的数据挖掘与分析工作

Hadoop的Python语言封装相关推荐

  1. mapreduce编程实例python-使用Python语言写Hadoop MapReduce程序

    原标题:使用Python语言写Hadoop MapReduce程序 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在本教程中,我将描述如何使用Pytho ...

  2. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  3. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态

    这一周Python语言学习,记录如下. 01 面向对象编OOP 1.1 为什么学习和应用OOP? 1 OOP适合更加复杂的需求分析和项目开发. 2 OOP具有更强大的封装能力. 3 OOP相比于面向过 ...

  4. python代码用c语言封装_使用C语言扩展Python程序的简单入门指引

    一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型 ...

  5. Hadoop的Python框架指南

    http://www.oschina.net/translate/a-guide-to-python-frameworks-for-hadoop 最近,我加入了Cloudera,在这之前,我在计算生物 ...

  6. python语言入门-python语言入门资料

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...

  7. Python语言的应用前景如何,应用方向有哪些。

    Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了.它具有丰富和强大的库,常被称为"胶水语言",能够把用其他语言编写的各种模块(尤其是C/C++)很轻 ...

  8. python数据科学导论_数据科学导论:Python语言(原书第3版)

    数据科学导论:Python语言(原书第3版) 作者:(意)阿尔贝托·博斯凯蒂;(意)卢卡·马萨罗 著 出版日期:2020年02月 文件大小:48.52M 支持设备: ¥50.00 适用客户端: 言商书 ...

  9. python语言是编译执行_加速Python运行的工具

    加速Python运行的工具应用 如果你需要让你的Python程序加速运行,在不同的层次有一些不同的解决方案: 重写 你的 Python 代码, 通过 并行化parallelizing 和 优化opti ...

最新文章

  1. zz[as3 hack技术]垃圾回收机强制执行
  2. 什么叫ipv6网络_(建议收藏)IPv6地址使用ping、telnet命令汇总
  3. R语言数据挖掘实践——系谱聚类
  4. Just a Hook HDU - 1698(查询区间求和+最基础模板)
  5. 多少秒算长镜头_下中国象棋,能算多少步才算高手?
  6. code block怎样实现图形界面_微服务入门:Openresty实现API网关
  7. sql server 群集_SQL Server 2014 –安装群集实例–分步(3/3)
  8. 腾讯:向今日头条开炮,只为1块钱和一声道歉!
  9. python3解码base64_python3base64解码混乱的换行符
  10. matlab乘与点乘的区别 (*与.* ^与.^)
  11. android listview去掉分割线
  12. Thread_多线程
  13. 基于ABBYY SDK 实现java版本 Hello 功能!
  14. HTML 数据可视化模板 echarts实现
  15. Chrome OS上的Android系统
  16. keil+stm32cubemx创建STM32F767芯片的RT-Thread工程
  17. D. Binary Spiders(dpTrie)
  18. MySQL讲义第50讲——select 查询之查询练习(八):查询每门课程成绩前三名的学生信息
  19. 变分法 (Calculus of Variations)
  20. 四元数船舶领域Quaternion ship domain

热门文章

  1. mysql 查询多边形_mysql中判断一个点是否在多边形中
  2. Zabbix的邮件报警配置
  3. 百度搜索打不开第二页_北易信息:百度爱采购适合做优化推广吗
  4. python处理csv文件缺失值_Python:如何处理CSV中的缺失值?
  5. 洛谷P2730 [IOI]魔板 Magic Squares
  6. T-SQL编程基础-基本语法
  7. 20145202 《信息安全系统设计基础》第8周学习总结
  8. jsp动作之 getProperty
  9. 委托的Invoke 和 BeginInvoke 与Control的Invoke和BeginInvoke(转-因为写得很好)
  10. USB有时adb shell连不上设备