python玩转大数据_用python玩转大数据 coursera - CSDN
  • 一 介绍 MapReduce 是一种分布式编程模型,用于处理大规模的数据。用户主要通过指定一个 map 函数和一个 reduce 函数来处理一个基于key/value pair的数据集合...使用python写MapReduce的“诀窍”是利用Hadoop流的A...

    一 介绍

    MapReduce 是一种分布式编程模型,用于处理大规模的数据。用户主要通过指定一个 map 函数和一个 reduce 函数来处理一个基于key/value pair的数据集合,输出中间的基于key/value pair的数据集合;然后 再创建一个Reduce函数用来合并所有的具有相同中间key值的中间value值。

    使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入),STDOUT(标准输出)在Map函数和Reduce函数之间传递数据。
    我们唯一需要做的是利用Python的sys.stdin读取输入数据,并把我们的输出传送给sys.stdout。Hadoop流将会帮助我们处理别的任何事情。

    二 mapreduce程序

    1)用户编写的python程序分成2个部分:Mapper,Reducer;然后将程序提交到集群上跑
    (2)Mapper的输入数据是KV对的形式(KV的类型可自定义)
    (3)Mapper的输出数据是KV对的形式(KV的类型可自定义)
    (4)Mapper中的业务逻辑写在map()方法中
    (5)map()方法(maptask进程)对每一个<K,V>调用一次
    (6)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
    (7)Reducer的业务逻辑写在reduce()方法中
    (8)Reducetask进程对每一组相同k的<k,v>组调用一次reduce()方法

    2.1.map.py

    # !/usr/bin/python
    # 第一行一定要注明python运行位置,否则需要在运行python程序时,在程序前面加上python命令
    # -*- coding: utf-8 -*-
    # @Time    : 2018/10/25 下午11:42
    # @Author  : Einstein Yang!!
    # @Nickname : 穿着开裆裤上大学
    # @FileName: map.py.py
    # @Software: PyCharm
    # @PythonVersion: python3.5
    # @Blog    :https://blog.csdn.net/weixin_41734687
    
    
    
    
    import sys
    
    # maps words to their counts
    word2count = {}
    
    # input comes from STDIN (standard input)
    for line in sys.stdin:
        # remove leading and trailing whitespace
        line = line.strip()
        # split the line into words while removing any empty strings
        words = filter(lambda word: word, line.split())
        # increase counters
        for word in words:
            # write the results to STDOUT (standard output);
            # what we output here will be the input for the
            # Reduce step, i.e. the input for reducer.py
            #
            # tab-delimited; the trivial word count is 1
            print('%s\t%s' % (word, 1))
    
    

    reduce.py

    # !/usr/bin/python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/10/25 下午11:54
    # @Author  : Einstein Yang!!
    # @Nickname : 穿着开裆裤上大学
    # @FileName: reduce.py
    # @Software: PyCharm
    # @PythonVersion: python3.5
    # @Blog    :https://blog.csdn.net/weixin_41734687
    
    
    
    from operator import itemgetter
    import sys
    
    # maps words to their counts
    word2count = {}
    
    # input comes from STDIN
    for line in sys.stdin:
        # remove leading and trailing whitespace
        line = line.strip()
    
        # parse the input we got from mapper.py
        word, count = line.split()
        # convert count (currently a string) to int
        try:
            count = int(count)
            word2count[word] = word2count.get(word, 0) + count
        except ValueError:
            # count was not a number, so silently
            # ignore/discard this line
            pass
    
    # sort the words lexigraphically;
    #
    # this step is NOT required, we just do it so that our
    # final output will look more like the official Hadoop
    # word count examples
    # 实现按字典key对word进行排序,这样输出的结果是有序的
    sorted_word2count = sorted(word2count.items(), key=itemgetter(0))
    
    # write the results to STDOUT (standard output)
    for word, count in sorted_word2count:
        print('%s\t%s' % (word, count))
    
    

    本地测试

    cat wordcount.csv | python map.py |sort -k 1|python reduce.py
    

    把代码放到集群上跑

    # 提交集群完整代码实例,下面用shell启动
    # /root/apps/hadoop-2.6.4/bin/hadoop jar /root/apps/hadoop-2.6.4/share/hadoop/tools/lib/hadoop-streaming-2.6.4.jar -mapper map.py -reducer  reduce.py -input /data/data_coe/data_asset/bigdata/*.csv -output /data/data_coe/data_asset/bigdata/output -file /root/Desktop/map.py -file /root/Desktop/reduce.py
    HADOOP_CMD="/root/apps/hadoop-2.6.4/bin/hadoop"
        STREAM_JAR_PATH="/root/apps/hadoop-2.6.4/share/hadoop/tools/lib/hadoop-streaming-2.6.4.jar"
        
        INPUT_FILE_PATH="/data/data_coe/data_asset/bigdata/*.csv"
        OUTPUT_PATH="/data/data_coe/data_asset/bigdata/output"
        
        hdfs dfs -rmr  $OUTPUT_PATH 
        
        $HADOOP_CMD jar $STREAM_JAR_PATH \
            -input $INPUT_FILE_PATH \
            -output $OUTPUT_PATH \
            -mapper "python map.py" \
            -reducer "python reduce.py" \
            -file /root/Desktop/map.py \
            -file /root/Desktop/reduce.py
    

    脚本解释

    HADOOP_CMD: hadoop的bin的路径
        STREAM_JAR_PATH:streaming jar包的路径
        INPUT_FILE_PATH:hadoop集群上的资源输入路径
        OUTPUT_PATH:hadoop集群上的结果输出路径。(注意:这个目录不应该存在的,因此在脚本加了先删除这个目录。**注意****注意****注意**:若是第一次执行,没有这个目录,会报错的。可以先手动新建一个新的output目录。)
        hdfs dfs -rmr  $OUTPUT_PATH
        
        $HADOOP_CMD jar $STREAM_JAR_PATH \
            -input $INPUT_FILE_PATH \
            -output $OUTPUT_PATH \
            # 若干map.py第一行指定了运行的python路径,即第一行写了!/usr/bin/python,可以以以下方式运行 -mapper map.py -reducer reduce.py
            -mapper "python map.py" \
            -reducer "python reduce.py" \
            -file /root/Desktop/map.py \
            -file /root/Desktop/reduce.py                 #这里固定格式,指定输入,输出的路径;指定mapper,reducer的文件;并分发mapper,reducer角色的我们用户写的代码文件,因为集群其他的节点还没有mapper、reducer的可执行文件。
    
    展开全文
  • What is this book about? 本书主要讨论在Python下如何处理、管理、清除数据,一并介绍了在Python下如何... 书中还介绍了Python语言和python标准库通过python提供的标准库可以有效的解决您在用Python进行大数据...

    What is this book about?

       本书主要讨论在Python下如何处理、管理、清除数据,一并介绍了在Python下如何进行科学计算技术。

       书中还介绍了Python语言和python标准库通过python提供的标准库可以有效的解决您在用Python进行大数据处理。

       书中提到的“数据”泛指:

          1)矩阵或者说多维数组

          2)表格(类似Excel、Calc)

          3)诸如SQL关系型数据库表

        上述这些数据都可以通过Python进行相应的处理,转换成适合Python分析的数据结构,之后用Python相应的工具进行数据分析、处理,提出数据特征并用一定的结构形式表现出来,这种形式对习惯用Excel处理数据的用户来说不会陌生,能够接受。

    《Python for Data Analysis》电子版下载地址 :

    http://pan.baidu.com/share/link?uk=1462801323&shareid=1472371919

         更多资料

    http://pan.baidu.com/share/home?uk=1462801323#category/type=0


    本文出自 “Python培训智普教育” 博客,请务必保留此出处http://jeapedu.blog.51cto.com/7878264/1290658

    转载于:https://my.oschina.net/u/3579120/blog/1507929

    展开全文
  • 01-Python大数据+人工智能-学前阶段 02-Python大数据+人工智能-基础阶段 03-Python大数据+人工智能-面向对象 04-Python大数据+人工智能-异常处理 05-Python大数据+人工智能-包和模块
  • # coding=utf-8 import pandas as pd from pandas import Series import numpy as np from numpy import * #通过传递一个list对象来创建一个Series,pandas会默认创建整型索引 s = p...
    # coding=utf-8
    
    import pandas as pd
    from pandas import Series
    import numpy as np
    from numpy import *
    #通过传递一个list对象来创建一个Series,pandas会默认创建整型索引
    s = pd.Series([1,3,5,np.nan,6,8])
    print s
    
    #通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame
    dates = pd.date_range('20100101',periods=6)
    print dates
    
    #通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame:
    dates = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
    print dates
    
    #打印3*4的矩阵,基数1
    xarray = np.ones((2, 4))
    print xarray
    print type(xarray)
    
    aArray = array([(1,2,3),(4,5,6),(7,8,9)])
    bArray = array([(1,2,3),(4,5,6),(7,8,9)])
    print aArray+bArray
    print zeros((2,2))
    cArray = array([(1,5,1),(2,3,4)])
    print cArray.shape
    print cArray.reshape(3,2)
    print cArray > 2
    eArray = array([(3,4,5)])
    fArray = array([(1,1,3)])
    gArray = array([(2,1,4)])
    print where(gArray > 2 , eArray , fArray)
    a = np.arange(1,5)
    print a
    print np.power(a,2).sum()
    print np.add(a,np.arange(4))
    
    #Series
    '''基本特征:1、类似一维数组的对象2、由数据和索引组成'''
    aSer = pd.Series([1,2.0,'a'])
    print aSer
    bSer = pd.Series([1,2.0,'a'],index=[1,2,3])
    print bSer
    print bSer.index,bSer.values
    
    data = {'A':'12','B':'22','C':'23'}
    rindex = ['A','B','C','D']
    cSer = pd.Series(data,index = rindex)
    print cSer
    
    #dataFrame
    '''基本特征:
        1、一个表格型的数据结构
        2、含有一组有序的列
        3、大致可以看成共享同一个index的series集合
    '''
    data = {'name':['wang','hong','zhong'],'pay':['1200','3400','3321']}
    frame = pd.DataFrame(data)
    print frame
    print frame['name']
    print frame.pay
    print frame.ix[2]
    frame.index.name = 'No'
    print frame

     

    转载于:https://my.oschina.net/passer007/blog/680871

    展开全文
  • 该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker搭建的5个容器。通过这门课程不仅可以学到Spark/Hadoop/Hive大数据知识,还可以学到当下后的云计算...
  • 学习一门课程将一直在这个随笔中来更新笔记。(目前在学习两个课程另外一个是Python基础课程,嵩天)目标:获得两门课程的优秀证书。 转载于:https://www.cnblogs.com/qq119829917/p/7689911.html...

    学习一门课程将一直在这个随笔中来更新笔记。(目前在学习两个课程另外一个是Python基础课程,嵩天)目标:获得两门课程的优秀证书。

     

    转载于:https://www.cnblogs.com/qq119829917/p/7689911.html

    展开全文
  • 该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker搭建的5个容器。通过这门课程不仅可以学到Spark/Hadoop/Hive大数据知识,还可以学到当下后的云计算...
  • python玩转大数据:简介 http://v.youku.com/v_show/id_XNTk3NDcwMTg4.htmlpython玩转大数据:网络爬虫 http://v.youku.com/v_show/id_XNjAwNjQyNDky.htmlpython玩转大数据:XML数据分析 ...
  • # coding=utf-8 from matplotlib.finance import quotes_historical_yahoo_ochl from datetime import date from datetime import datetime import pandas as...
  • Python玩转大数据--105精讲视频 大数据工程师/算法工程师/大数据讲...
  • 01-Python大数据+人工智能-学前阶段.zip 02-Python大数据+人工智能-基础阶段.zip 03-Python大数据+人工智能-面向对象.zip 04-Python大数据+人工智能-异常处理.zip 05-Python大数据+人工智能-包和模块.zip 下载地址...
  • 搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python...
  • 无论是在构建大数据的应用程序,还是仅仅只想从开发的移动应用中得到一点点启发,程序员现在比以往任何时候都需要大数据分析工具。这绝对是一个好东西,所以很多公司从程序员的需求和技能出发,构建了一些数据分析...
  • Storm入门教程 玩转大数据计算之Storm 大数据分析工程师任职要求: 1.计算机、数学等相关专业,2年以上大数据分析工作经验,博士优先 2.有较强的机器学习算法理论知识,熟悉常用的一些机器学习算法,分类、回归等 3....
  • 摘要:无论是在构建大数据的应用程序,还是仅仅只想从开发的移动应用中得到一点点启发,程序员现在比以往任何时候都需要数据分析工具,这绝对是一个好东西。GigaOm的记者Derrick Harris列举了十二种大数据工具。可谓...
  • 使用python链接mysql读入一个表并把它再写到hbase 里去(九头蛇万岁) 先声明一下需要用的库: 俩!!: happybase (写这个的老哥真的happy) pymysql 建议使用anaconda进行相应版本匹配安装,在装happybase的...
  • Python乱炖每周三赠书时间到~《Python大数据与机器学习实战》5本包邮!查看文章尾部参与赠书随着5G时代的来临、企事业单位信息化系统的不断完善以及物联网的兴起,数据...
  • 使用python链接mysql读入一个表并把它再写到hbase 里去(九头蛇万岁) 先声明一下需要用的库: 俩!!: happybase (写这个的老哥真的happy) pymysql 建议使用anaconda进行相应版本匹配安装,在装happybase的...
  • 腾讯大数据
  • 导读:相比于科学,数据分析更像是一门艺术。创建样式优美的数据可视化是这个艺术中不可缺少的部分。然而,某些人认为优美的,也会有人觉得难以接受。和艺术类似,随着数据分析的快速...
1 2 3 4 5 ... 20
收藏数 5,204
精华内容 2,081
关键字:

python玩转大数据