zoukankan      html  css  js  c++  java
  • [CPyUG] [OT] php python Ruby选择 maolingzhi@gmail.com Gmail

    [CPyUG] [OT] php python Ruby选择 - maolingzhi@gmail.com - Gmail

    1. 安装virtualenv
    2. 安装distutil
    3. 安装pip
    每个软件主页上都有详细说明,别参考来历不明的教程特别是中文的
    你的错误信息似乎是没有distutil

    使用python开发hadoop streaming程序及hadoop python网页抓取例子 - flying5 - 博客园

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

    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()
        match = title_re.search(urllib.urlopen(url).read())
        if match:
            print "mapper", url, "\t", match.group(1).strip()

    reducer.py

    #!/usr/bin/env python
     
    from operator import itemgetter
     
    import sys
     
    for line in sys.stdin:
        line = line.strip()
        print "reducer " + line

    可以先运行以下命令来验证这个程序是否正确:

    [admin@search011 url]$ cat url
    http://www.163.com
    http://www.sina.com
    http://www.baidu.com
    [admin@search011 url]$ cat url | ./mapper.py | ./reducer.py
    reducer mapper http://www.163.com       网易
    reducer mapper http://www.sina.com      新浪首页
    reducer mapper http://www.baidu.com     百度一下,你就知道

    用hadoop streaming的方式提交job:

    #!/bin/sh
     
    hadoop fs -rmr /test/output
     
    hadoop jar ~/hadoop/contrib/streaming/hadoop-0.20.2-streaming.jar \
               -mapper mapper.py \
               -file mapper.py \
               -reducer reducer.py \
               -file reducer.py \
               -input /test/input \
               -output /test/output \
               -jobconf mapred.reduce.tasks=3 \
               -jobconf mapred.job.name="my crawl job"
                
    hadoop fs -ls /test/output/
    hadoop fs -cat /test/output/*

    直接用python语言开发hadoop程序有时候显得不够灵活,比如mapper.py和reducer.py程序必须放在两个文件中。 于是国外有人用python对hadoop API进行了封转。著名的音乐站点Last.fm发布了基于Python的Dumbo(小飞象)项目,Dumbo能够帮助Python开发者更方便的编写Hadoop应用,并且Dumbo为MapReduce应用提供了灵活易用的Python API。Last.fm的开发者,同时也是Dumbo项目发起人Klaas Bosteels 认为,“对于定制Hadoop应用,使用Python语言代替Java会让工作变得更有效率”。

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

    (参考:http://www.gaoang.com/archives/158)

  • 相关阅读:
    Codeforces466C Number of Ways
    hdu 4902 Nice boat--2014 Multi-University Training Contest 4
    怎样免费设置QQ空间背景音乐
    “小懒虫”安卓手机控制电脑关机
    js和jquery实现回到顶层
    机器学习概念
    HDU 4786(最小生成树 kruskal)
    算法----堆排序(heap sort)
    openfireserver和jdk环境删除命令
    POI操作Excel导入和导出
  • 原文地址:https://www.cnblogs.com/lexus/p/2872319.html
Copyright © 2011-2022 走看看