pyspark 安装

目录

1、什么是 Apache Spark?

2、spark安装(python版本)

3、在jupyter notebook中使用pyspark

1、什么是 Apache Spark?

Apache Spark 是一种用于处理、查询和分析大数据的快速集群计算框架。Apache Spark 是基于内存计算,这是他与其他几种大数据框架相比的一大优势。Apache Spark 是开源的,也是最著名的大数据框架之一。当它使用内存计算时,它比传统map-reduce任务快100倍;当它使用磁盘时比传统的map-reduce 任务快10倍。

Apache Spark的历史

Apache Spark 最初于2009年在加州大学伯克利分校的AMPLab创建。Spark 代码库后来被捐赠给Apache Software Foundation。 随后,他在2010年开源,spark 主要是用Scala语言编写的,也有一部分代码是用Java,Python和R编写的。 Apache Spark也为程序员提供了几个API,包括 Java,Scala,Python和R。

Apache Spark 如何比传统的大数据框架更好?

内存计算: Apache Spark的最大优势在于它可以将数据保存在RAM中或从RAM中加载数据,而不是从磁盘(硬盘驱动器)中加载数据。如果我们谈论内存层次结构,RAM具有比硬盘驱动器高得多的处理速度(如下图所示)。由于内存价格在过去几年中显着下降,因此内存计算已经获得了很大的发展势头。Spark使用内存计算加速比Hadoop框架快100倍。

在Hadoop中,任务分布在集群的节点之间,从而将数据保存在磁盘上。当需要处理该数据时,每个节点必须从磁盘加载数据并在执行操作后将数据保存到磁盘中。此过程最终会增加速度和时间方面的成本,因为磁盘操作比RAM操作慢得多。在将数据从RAM写入磁盘时,还需要时间来转换特定格式的数据。此转换称为序列化,反向称为反序列化。

让我们看一下MapReduce过程,以更好地理解内存计算的优势。假设,有几个map-reduce任务一个接一个地发生。在计算开始时,两种技术(Hadoop和Spark)都从磁盘读取数据以进行映射。Hadoop执行映射操作并将结果保存回硬盘驱动器。但是,在Apache Spark的情况下,结果存储在RAM中。

在下一步(Reduce操作)中,Hadoop从硬盘中读取保存的数据,Apache Spark从RAM中读取数据。这会在单个MapReduce操作中产生差异。现在想象一下,如果有多个map-reduce操作,那么在任务完成结束时你会看到多少时差。

语言支持:Apache Spark为流行的数据科学语言提供API支持,如Python,R,Scala和Java。

支持实时和批处理:Apache Spark支持“批量数据”处理,其中在一段时间内收集一组事务。它还支持实时数据处理,其中数据从源连续流动。例如,Apache Spark可以直接处理来自传感器的天气信息。

延迟操作: 延迟操作用于优化Apache Spark中的解决方案。我将在本文后面部分讨论延迟评估。现在,我们可以认为有些操作在我们需要结果之前不会执行。

支持多种转换和操作: Apache Spark相对于Hadoop的另一个优点是Hadoop仅支持MapReduce,但Apache Spark支持许多转换和操作,包括MapReduce。

与Hadoop相比,Apache Spark还有其他优点。例如,Apache Spark在执行Map side shuffling 和 Reduce side shuffling 时要快得多。然而,改组本身就是一个复杂的话题,需要整篇文章本身。因此,我在这里不再详细讨论它。

2、使用pyspark 安装Apache Spark

我们可以通过许多不同的方式安装Apache Spark。安装Apache Spark的最简单方法是从单台机器上安装开始。要在一台机器上安装,我们需要满足某些要求。下面我分享下在Ubuntu(16.04)中安装PSpark 2.4.0版本的步骤。

操作系统:Ubuntu 16.04,64位。

所需软件:Java 8 +,Python 3.5 +, Scala 2.11.12+

安装步骤:

Step 1:Java 8安装

sudo apt-get update

sudo apt-get install openjdk-8-jdk

java -version

安装成功后,会显示如下画面:

Step 2:如果Java安装完成后,我们安装Scala。

wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.deb

sudo dpkg -i scala-2.12.8.deb

scala -version

安装成功后,会显示如下画面:

Step 3:安装 py4j

Py4J在驱动程序上用于Python和Java SparkContext对象之间的本地通信;大型数据传输是通过不同的机制执行的。

sudo pip install py4j

Step 4:安装 Spark

到目前为止,我们已经安装了安装Apache Spark所需的依赖项。接下来,我们需要下载并提取spark-2.4.0-bin-hadoop2.7.tgz 。

wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz

tar xvf spark-2.4.0-bin-hadoop2.7.tgz

在通过编辑bashrc文件将其添加到路径中:

vim ~/.bashrc

在bashrc文件中添加环境变量

export SPARK_HOME=/home/ubuntu/spark-2.4.0-bin-hadoop2.7

export PATH=$/bin:$PATH

最后激活环境变量

source ~/.bashrc

Step 5:到目前为止,我们的spark基本安装成功,下面我们来启动pyspark

启动pyspark的命令如下:

pyspark

退出命令如下:

exit()

Step 6:另外,安装完成后,我们可以通过输入来检查Spark是否正常运行。

./bin/run-example SparkPi 10

会发现如下图所示:

咦!!! 咋不能运行呢?

如果想查看上述运行的结果,我们还需要配置个环境。需要降低

log4j.properties中 log4j记录器的详细级别。

cp conf/log4j.properties.template conf/log4j.properties

vim conf/log4j.properties

打开文件'log4j.properties'后,我们需要替换以下行:

log4j.rootCategory=INFO, console

替换为

log4j.rootCategory=ERROR, console

然后我们再次运行

./bin/run-example SparkPi 10

会发现结果如下图所示:

最后我们来写一段pyspark的代码来测试下,打开我们的pyspark环境,输入:

from pyspark import SparkContext

from pyspark import SparkConf

data = list(range(1,1000))

rdd = sc.parallelize(data)

rdd.collect()

会发现完美运行!!!整个pyspark的单机版就安装好了!

3、在jupyter notebook中使用pyspark

在命令行中写pyspark好像有点麻烦,我们是不是也能像python一样在jupyter中写pyspark呢,答案是可以的。

有两种方法可以配置我们的环境:

第一种:更新PySpark驱动程序环境变量:将下面这些行添加到~/.bashrc文件中。

export PYSPARK_DRIVER_PYTHON=jupyter

export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

重新启动终端并再次启动PySpark:

好像变成了我们的jupyter界面了呢!然后其他的操作就是和使用jupyter 一样了。

完美运行!

第二种:在Jupyter Notebook中使用PySpark还有另一种更通用的方法:使用findSpark包在代码中提供Spark Context。findSpark包不是特定于Jupyter Notebook,你也可以在你喜欢的IDE中使用这个技巧。要安装findspark:

pip install findspark

然后打开jupyter notebook:

本次pyspark的安装就介绍到这里了,如果哪里有问题,欢迎指出!谢谢!

更多个人笔记欢迎关注:

知乎专栏:https://www.zhihu.com/people/yuquanle/columns

参考:

1、https://www.analyticsvidhya.com/blog/2016/09/comprehensive-introduction-to-apache-spark-rdds-dataframes-using-pyspark/

2、https://blog.sicara.com/get-started-pyspark-jupyter-guide-tutorial-ae2fe84f594f

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181215G0UAJ500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券