Spark快速开始

本文介绍如何通过Spark Shell进行交互式数据分析,并演示了如何利用Python编写Spark应用,包括创建弹性分布式数据集(RDD),执行基本的操作如计数和过滤等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文主要介绍快速使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值