经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Spark » 查看文章
Spark 的 python 编程环境
来源:cnblogs  作者:尾生7  时间:2019/6/12 11:29:19  对本文有异议

Spark编程环境

Spark 可以独立安装使用,也可以和 Hadoop 一起安装使用。在安装 Spark 之前,首先确保你的电脑上已经安装了 Java 8 或者更高的版本。

Spark 安装

访问Spark 下载页面,并选择最新版本的 Spark 直接下载,当前的最新版本是 2.4.2 。下载好之后需要解压缩到安装文件夹中,看自己的喜好,我们是安装到了 /opt 目录下。

  1. tar -xzf spark-2.4.2-bin-hadoop2.7.tgz
  2. mv spark-2.4.2-bin-hadoop2.7 /opt/spark-2.4.2

为了能在终端中直接打开 Spark 的 shell 环境,需要配置相应的环境变量。这里我由于使用的是 zsh,所以需要配置环境到 ~/.zshrc 中。

没有安装 zsh 的可以配置到 ~/.bashrc

  1. # 编辑 zshrc 文件
  2. sudo gedit ~/.zshrc
  3. # 增加以下内容:
  4. export SPARK_HOME=/opt/spark-2.4.2
  5. export PATH=$SPARK_HOME/bin:$PATH
  6. export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH

配置完成后,在 shell 中输入 spark-shell 或者 pyspark 就可以进入到 Spark 的交互式编程环境中,前者是进入 Scala 交互式环境,后者是进入 Python 交互式环境。

配置 Python 编程环境

在这里介绍两种编程环境,JupyterVisual Studio Code。前者方便进行交互式编程,后者方便最终的集成式开发。

PySpark in Jupyter

首先介绍如何在 Jupyter 中使用 Spark,注意这里 Jupyter notebook 和 Jupyter lab 是通用的方式,此处以 Jupyter lab 中的配置为例:

在 Jupyter lab 中使用 PySpark 存在两种方法:

  • 配置 PySpark 的启动器为 Jupyter lab,运行 pyspark 将自动打开一个 Jupyter lab;
  • 打开一个正常的 Jupyter lab,并使用 findSpark 包来加载 PySpark。

第一个选项更快,但特定于Jupyter笔记本,第二个选项是一个更广泛的方法,使PySpark在你任意喜欢的IDE中都可用,强烈推荐第二种方法。

方法一:配置 PySpark 启动器

更新 PySpark 启动器的环境变量,继续在 ~/.zshrc 文件中增加以下内容:

  1. export PYSPARK_DRIVER_PYTHON=jupyter
  2. export PYSPARK_DRIVER_PYTHON_OPTS='lab'

如果要使用 jupyter notebook,则将第二个参数的值改为 notebook

刷新环境变量或者重启机器,并执行 pyspark 命令,将直接打开一个启动了 Spark 的 Jupyter lab。

  1. pyspark

uploading-image-247799.png

方法二:使用 findSpark 包

在 Jupyter lab 中使用 PySpark 还有另一种更通用的方法:使用 findspark 包在代码中提供 Spark 上下文环境。

findspark 包不是特定于 Jupyter lab 的,您也可以其它的 IDE 中使用该方法,因此这种方法更通用,也更推荐该方法。

首先安装 findspark:

  1. pip install findspark

之后打开一个 Jupyter lab,我们在进行 Spark 编程时,需要先导入 findspark 包,示例如下:

  1. # 导入 findspark 并初始化
  2. import findspark
  3. findspark.init()
  4. from pyspark import SparkConf, SparkContext
  5. import random
  6. # 配置 Spark
  7. conf = SparkConf().setMaster("local[*]").setAppName("Pi")
  8. # 利用上下文启动 Spark
  9. sc = SparkContext(conf=conf)
  10. num_samples = 100000000
  11. def inside(p):
  12. x, y = random.random(), random.random()
  13. return x*x + y*y < 1
  14. count = sc.parallelize(range(0, num_samples)).filter(inside).count()
  15. pi = 4 * count / num_samples
  16. print(pi)
  17. sc.stop()

运行示例

uploading-image-293957.png


PySpark in VScode

Visual Studio Code 作为一个优秀的编辑器,对于 Python 开发十分便利。这里首先推荐个人常用的一些插件:

  • Python:必装的插件,提供了Python语言支持;
  • Code Runner:支持运行文件中的某些片段;

此外,在 VScode 上使用 Spark 就不需要使用 findspark 包了,可以直接进行编程:

  1. from pyspark import SparkContext, SparkConf
  2. conf = SparkConf().setMaster("local[*]").setAppName("test")
  3. sc = SparkContext(conf=conf)
  4. logFile = "file:///opt/spark-2.4.2/README.md"
  5. logData = sc.textFile(logFile, 2).cache()
  6. numAs = logData.filter(lambda line: 'a' in line).count()
  7. numBs = logData.filter(lambda line: 'b' in line).count()
  8. print("Lines with a: {0}, Lines with b:{1}".format(numAs, numBs))

原文链接:http://www.cnblogs.com/ydcode/p/11002669.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号