您的位置:首页 > 编程语言 > Python开发

Spark快速开始

2016-11-13 12:14 337 查看
    本文主要介绍快速使用Spark的方法。首先通过Spark的交互式shell介绍相关的API,然后介绍如何使用Java、Scala和Python编写应用程序。

    开始介绍之前需要从Spark website下载一个发行包。虽然我们不使用HDFS,但是可以下载任何版本的Hadoop包。

    基于Spark Shell的交互式分析

    Spark's shell 除了是一个强大的交互式分析数据的工具,也提供了相关API的简单学习方式。Scala和Python都支持它。在Spark安装路径下运行./bin/pyspark

  Spark主要概念是一个叫做弹性的分布式数据集合-RDDs。RDDS能够通过Hadoop InputFormats或者其它RDDs来创建。下面代码是通过在Spark安装路径下的README文件创建一个新的RDD:

     >>> textFile = sc.textFile("README.md")

     RDDs有actions和transformations两种操作,actions返回值,transformations返回一个指向新RDDs的指针,下面的代码是用来统计textFile的单词数和显示第一个元素:

     >>> textFile.count()

    126

    >>> textFile.first()

    u"#Apache Spark"

    filter是transformation的一种,它可以返回一个新的由文件元素子集合组成的RDD

    >>> linesWithSpark = textFile.filter(lambda line: "Spark" in line)

    我们可以将以上的动作合并到一行代码中

    >>> textFile.filter(lambda line: "Spark" in line).count()

    15

    更多的RDD操作

    RDD actions和transformations能够用于更复杂的计算中,下面的代码用来找出最多单词的函数

    >>> textFile.map(lambda line: len(line.split())).reduce(lambda a, b: a if (a > b) else b)

    15

    第一个map创建一个元素为整数的RDD,然后该RDD调用reduce找出最大的数。

    MapReduce是一个一般的数据流模式,就像流行的Hadoop那样,Spark能够独立的简单的完成MapReduce流

    >>> wordCounts = textFile.flatMap(lambda line: line.split()).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)

    Caching

    Spark支持将数据集合放入内存中缓存. 该功能有利于频繁的访问数据。

    >>> linesWithSpark.cache()

     >>> linesWithSpark.count()

    19

    独立的应用程序

    通过Spark的API我们能编写独立的应用程序,并且运行在Scala、Java和Python的环境中。

    下面是Python的一个简单的应用程序:

    """SimpleApp.py"""

    from pyspark import SparkContext

    logFile = "YOUR_SPARK_HOME/README.md"  # Should be some file on your system

    sc = SparkContext("local", "Simple App")

    logData = sc.textFile(logFile).cache()

    numAs = logData.filter(lambda s: 'a' in s).count()

    numBs = logData.filter(lambda s: 'b' in s).count()

    print("Lines with a: %i, lines with b: %i" % (numAs, numBs))

    # Use spark-submit to run your application

   $ YOUR_SPARK_HOME/bin/spark-submit \

          --master local[4] \

         SimpleApp.py

    ...

    Lines with a: 46, Lines with b: 23
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息