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

Spark 安装

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

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

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

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

# 编辑 zshrc 文件
sudo gedit ~/.zshrc # 增加以下内容:
export SPARK_HOME=/opt/spark-2.4.2
export PATH=$SPARK_HOME/bin:$PATH
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 文件中增加以下内容:

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='lab'

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

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

pyspark

方法二:使用 findSpark 包

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

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

首先安装 findspark:

pip install findspark

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

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

运行示例


PySpark in VScode

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

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

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

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

Spark 的 python 编程环境的更多相关文章

  1. Emacs 配置 Python 编程环境

    python编程环境设置涉及到:自动完成.语法检查.虚拟环境. 为了不把系统搞乱,在python的虚拟环境中安装相关的插件. 一.安装python虚拟环境 virtualenvwrapper sudo ...

  2. vim配置python编程环境及YouCompleteMe的安装教程

    python号称人工智能语言,现在可算大热,这篇博客将介绍如何用vim打造一款自己专属的python编程环境. step1 由于安装YouCompleteMe需要vim8.0及以上版本,所以得安装使用 ...

  3. 在win10的Linux子系统(WSL)上搭载python编程环境

    为什么使用WSL进行python编程 WSL,全称Windows Subsystem for Linux.简言之,win10提供了一个子Linux系统,可以解决虚拟机和双系统的系统之间阻隔的问题而不影 ...

  4. Python编程环境设置

    第1节.Python编程环境设置 一.sublime相关 1.sublime REPL插件安装 (1)安装 先打开插件安装面板:ctrl+shift+P 输入install ,选择Package Co ...

  5. [零基础学pythyon]安装python编程环境

    不论什么高级语言都是须要一个自己的编程环境的,这就好比写字一样,须要有纸和笔,在计算机上写东西.也须要有文字处理软件,比方各种名称的OFFICE.笔和纸以及office软件,就是写东西的硬件或软件.总 ...

  6. 使用UE配置Python编程环境

    一直在使用UE来进行python编程,觉得在UE下进行python编程使用起来还是很方便地,现在特来总结一下: 1.首先是python环境搭建 (1)下载python2.7 https://www.p ...

  7. Python 编程环境搭建(Windows 系统中)

    由于大家普遍使用 Windows 系统,所以本文只介绍 Windows 系统中 Python 环境的安装. 在 Windows 中安装 Python 与安装普通软件没什么差别,下载所需版本的安装包后, ...

  8. cmd如何进入和退出Python编程环境?

    cmd里面进入python编译环境的方式: 安装Python之后需直接运行: python 即可进入Python开发环境 退出Python编译环境主要有三种方式: 1:输入exit(),回车 2:输入 ...

  9. Windows配置Python编程环境

    1.安装Python https://www.python.org/ 2.修改环境变量 将安装python的路径加到path路径 3.配置notepad++ a. notepad++/运行/“运行”按 ...

随机推荐

  1. 读取spring工程中resource的文件

    Resource resource = new ClassPathResource("data.json"); // 读文件到字符串 String fileContent = Fi ...

  2. 在云中生成和模拟 iOS

    原文:在云中生成和模拟 iOS 1.原文地址 https://msdn.microsoft.com/zh-cn/library/vs/alm/dn858446.aspx

  3. Android零基础入门第38节:初识Adapter

    原文:Android零基础入门第38节:初识Adapter 在上一节一起了解了ListView的简单使用,那么本节继续来学习与ListView有着千丝万缕的Adapter. 一.了解MVC模式 在开始 ...

  4. 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件): Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o hello.o 4.链接,生成可执行文件: linux笔记

    1 动态查看日志 tail -f filename tail -1000f filename 2 解压当前目录内容为xxx.zip  zip -r xxx.zip ./* 3 查看内存使用情况 fre ...

  5. 【Windows10 IoT开发系列】开发人员模式设置

    原文:[Windows10 IoT开发系列]开发人员模式设置  声明:本文转自微软Windows 开发人员中心(https://msdn.microsoft.com/library/windows/ ...

  6. 了解BroadcastRecever

    广播分类: 标准广播(Normal broadcasts):完全异步执行的广播,接收没有先后顺序,效率高,无法被接收器被拦截. 有序广播(Ordered broadcasts) :同步执行的广播,有先 ...

  7. Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)

    自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...

  8. Delphi中Menu设置Images属性后快捷按键下划线被隐藏解决方法

    现象:MainMenu设置Images属性后,看不到快捷按键的下划线,如:新建(&N) 分析:VCL中Menus.pas单元的代码,看到如下语句procedure TMenuItem.Adva ...

  9. 发现 TSplitter 在嵌套时不好用, 索性写了个替代品(处理MouseDown,MouseMove,MouseUp,然后设定控件的Left值就可以了)

    代替 TSplitter 的 TDirPanel 类: unit DirPanel; interface uses   Classes, Controls, Forms, ExtCtrls; type ...

  10. c++用参数返回堆上的空间

    <高质量c++和c编程>7.4 指针参数是如何传递内存的一节中写道 void GetMemory(char *p, int num) { p = (char *)malloc(sizeof ...