• python大数据


    http://blog.csdn.net/xnby/article/details/50782913

    一句话总结:spark是一个基于内存的大数据计算框架,

    上层包括了:Spark SQL类似HiveQL, Spark Streaming 实时数据流计算,MLlib 机器学习算法包,GraphX 图算法包

    底层 SparkCore 实现了基本功能:任务调度,内存管理,错误恢复,存储交互等,SparkCore还包含了对RDD(弹性分布式数据集)的API定义

    RDD是Spark对计算任务封装,现在不懂也没关系,后面会随着实例进一步理解RDD

    一、Spark安装:

    单机版本spark安装相当简单,从官网下载一个源码包,解压即可。http://spark.apache.org/downloads.html

    解压,把bin目录加入环境变量,pyspark即可启动python shell

    单机模式启动pyspark后

    一个简单的demo:

    >>>lines = sc.textFile("1.txt") //创建一个RDD,“1.txt为本地存在的文件

    >>> lines                                                                  

    MapPartitionsRDD[4] at textFile at NativeMethodAccessorImpl.java:-2

    >>> lines.count()

    7

    通过lines对象,可以调用基本的函数,统计单词数等

     

    例子中sc是什么呢?SparkContext。

    每一个spark应用都有一个驱动器程序()来发起集群上的各种并行操作,pyspark即驱动器程序,

    驱动器程序通过一个SparkContext对象来访问Spark,sc代表对计算集群的一个连接。

    驱动器程序一般要管理多个执行器节点,将计算任务分发给不同的节点计算。

     

    下面继续完成大数据下的Helloword:word count 程序:

     

    >>> words = lines.flatMap(lambda line: line.split(' '))

    >>> words

    PythonRDD[8] at RDD at PythonRDD.scala:43

    >>> wc = words.map(lambda x:(x,1))

    >>> wc

    PythonRDD[9] at RDD at PythonRDD.scala:43

    >>> from operator import add

    >>> counts = wc.reduceByKey(add)

    >>> counts

    PythonRDD[14] at RDD at PythonRDD.scala:43

     

    >>> counts.saveAsTextFile("wc")

    示例中可以看出 lines,words,wc,counts都是RDD对象实例

    每一步操作在Spark都是RDD的一个抽象

     

    独立应用,不通过shell怎么写独立的脚本呢,

    直接编写校本文件,然后通过spark-submit提交即可

    eg:worldcount程序的py脚本如下:

    ########first.py############

    from pyspark import SparkConf, SparkContext
    from operator import add

    conf = SparkConf().setMaster("local").setAppName("My App")
    sc = SparkContext(conf=conf)

    lines = sc.textFile("/Users/xiabin/1.txt")

    words = lines.flatMap(lambda line: line.split(' '))
    wc = words.map(lambda x:(x,1))
    counts = wc.reduceByKey(add)

    counts.saveAsTextFile("wcres")

    ########first.py############

    测试中还发现,spark-submit可以智能的识别应用的一些py模块,比如import一个myconf.py文件

    或者一个包都可以无需添加任何代码运行(只单机实验)。

    第一次接触下来对比写hadoop的mapreduce代码,spark的封装调用相对来说简单了不少。

    附加信息:

    http://www.tuicool.com/articles/iAbInuj 

    http://blog.csdn.net/kwu_ganymede/article/details/51832427

  • 相关阅读:
    flash/flex builder在IE中stage.stageWidth始终为0的解决办法
    “AS3.0高级动画编程”学习:第一章高级碰撞检测
    Flash/Flex学习笔记(57):实用技巧
    Flash/Flex学习笔记(56):矩阵变换
    flash开发中如何实现界面代码分离
    [转]Flash开发技能树
    flash builder代码格式化以及其它快捷键
    中小型商城系统中的分类/产品属性/扩展属性的数据库设计
    “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
    晒晒这两天做的播放器
  • 原文地址:https://www.cnblogs.com/wcLT/p/6591953.html
Copyright © 2020-2023  润新知