Ubuntu 下 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 时要快得多。然而,shuffling 本身就是一个复杂的话题,需要整篇文章本身。因此,我在这里不再详细讨论它。

 

2、使用pyspark 安装Apache Spark

我们可以通过许多不同的方式安装Apache Spark。安装Apache Spark的最简单方法是从单台机器上安装开始。要在一台机器上安装,我们需要满足某些要求。下面我分享下在Ubuntu(16.04)中安装PySpark 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文件中添加环境变量(具体SPARK_HOME路径自己设定)

export SPARK_HOME=/home/ubuntu/spark-2.4.0-bin-hadoop2.7
export PATH=${SPARK_HOME}/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的安装就介绍到这里了,如果哪里有问题,欢迎指出!谢谢!

 

更多个人笔记欢迎关注:

公众号:AI_TIMO(数据算法之心)

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

参考:

http://link.zhihu.com/?target=https%3A//www.analyticsvidhya.com/blog/2016/09/comprehensive-introduction-to-apache-spark-rdds-dataframes-using-pyspark/

http://link.zhihu.com/?target=https%3A//blog.sicara.com/get-started-pyspark-jupyter-guide-tutorial-ae2fe84f594f

 

  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值