现在的位置: 首页 > 综合 > 正文

使用python开发hadoop streaming程序及hadoop python网页抓取例子

2012年09月04日 ⁄ 综合 ⁄ 共 741字 ⁄ 字号 评论关闭

转自:http://www.cnblogs.com/flying5/archive/2011/08/31/2161364.html

Hadoop streaming是Hadoop的一个工具,它帮助用户创建和运行一类特殊的map/reduce作业,这些特殊的map/reduce作业是由一些可执行文件或脚本文件充当mapper或者reducer。通过streaming工具,程序员可以使用c++, python, perl, ruby等语言来开发map/reduce任务。

  如何用python开发hadoop程序,hadoop源代码中提供了一个统计词频的例子WordCount.py,不过这个例子程序是将Python代码通过Jython运行时转换为jar包。然后通过streaming的方式运行这个jar包,稍显麻烦。

  德国的开发者Michael G. Noll提供了一种python的实现方法:通过STDIN标准输入和STDOUT标准输在Map和Reduce代码之间传输数据。Python的sys.stdin方法读取输入数据,并通过sys.stdout打印输出数据,而数据的交互处理过程交由Hadoop
Streaming来处理。

  一个用python写的典型的hadoop streaming例子程序如下,该程序就是抓取网页的标题:

     mapper.py

#!/usr/bin/env
python
 
import sys,
urllib, re
 
title_re = re.compile("<title>(.*?)</title>",
re.MULTILINE | re.DOTALL | re.IGNORECASE)
 
for line in sys.stdin:
    url = line.strip()

抱歉!评论已关闭.