zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Agc011_C Squared Graph
    银河战舰
    项链
    无旋Treap
    [PHP] 生成二维码(两种方法)
    [XML] XML格式【有道翻译】API 的数据转化输出
    [YII2] COOKIE的操作使用
    [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
    [YII2] 修改默认控制器Controller以及默认方法Action
    [YII2] 3步发送邮件,有图有真相!
  • 原文地址:https://www.cnblogs.com/wcLT/p/6591953.html
Copyright © 2011-2022 走看看