Linux下搭建Spark 的 Python 編程環(huán)境的方法
Spark編程環(huán)境
Spark 可以獨(dú)立安裝使用,也可以和Hadoop 一起安裝使用。在安裝 Spark 之前,首先確保你的電腦上已經(jīng)安裝了 Java 8 或者更高的版本。
Spark 安裝
訪問 Spark 下載頁面 ,并選擇最新版本的 Spark 直接下載,當(dāng)前的最新版本是 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 環(huán)境,需要配置相應(yīng)的環(huán)境變量。這里我由于使用的是 zsh,所以需要配置環(huán)境到 ~/.zshrc 中。
沒有安裝 zsh 的可以配置到 ~/.bashrc 中
# 編輯 zshrc 文件 sudo gedit ~/.zshrc # 增加以下內(nèi)容:export SPARK_HOME=/opt/spark-2.4.2export PATH=$SPARK_HOME/bin:$PATH export <a target="_blank" title="Python">Python</a>PATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
配置完成后,在 shell 中輸入 spark-shell
或者 pyspark 就可以進(jìn)入到 Spark 的交互式編程環(huán)境中,前者是進(jìn)入 Scala 交互式環(huán)境,后者是進(jìn)入 Python 交互式環(huán)境。
配置 Python 編程環(huán)境
在這里介紹兩種編程環(huán)境, Jupyter 和 Visual Studio Code。前者方便進(jìn)行交互式編程,后者方便最終的集成式開發(fā)。
PySpark in Jupyter
首先介紹如何在 Jupyter 中使用 Spark,注意這里 Jupyter notebook 和 Jupyter lab 是通用的方式,此處以 Jupyter lab 中的配置為例:
在 Jupyter lab 中使用 PySpark 存在兩種方法:
pyspark 將自動打開一個 Jupyter lab;
findSpark 包來加載 PySpark。
第一個選項更快,但特定于Jupyter筆記本,第二個選項是一個更廣泛的方法,使PySpark在你任意喜歡的IDE中都可用,強(qiáng)烈推薦第二種方法。
方法一:配置 PySpark 啟動器
更新 PySpark 啟動器的環(huán)境變量,繼續(xù)在 ~/.zshrc 文件中增加以下內(nèi)容:
export PYSPARK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS='lab'
如果要使用 jupyter notebook,則將第二個參數(shù)的值改為 notebook
刷新環(huán)境變量或者重啟機(jī)器,并執(zhí)行 pyspark 命令,將直接打開一個啟動了 Spark 的 Jupyter lab。
pyspark
方法二:使用 findSpark 包
在 Jupyter lab 中使用 PySpark 還有另一種更通用的方法:使用 findspark
包在代碼中提供 Spark 上下文環(huán)境。
findspark 包不是特定于 Jupyter lab 的,您也可以其它的 IDE 中使用該方法,因此這種方法更通用,也更推薦該方法。
首先安裝 findspark:
pip install findspark
之后打開一個 Jupyter lab,我們在進(jìn)行 Spark 編程時,需要先導(dǎo)入 findspark 包,示例如下:
# 導(dǎo)入 findspark 并初始化import findspark findspark.init()from pyspark importSparkConf,SparkContextimport random # 配置 Spark conf =SparkConf().setMaster("local[*]").setAppName("Pi")# 利用上下文啟動 Spark sc =SparkContext(conf=conf) num_samples =100000000definside(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()
運(yùn)行示例:
PySpark in VScode
Visual Studio Code 作為一個優(yōu)秀的編輯器,對于 Python 開發(fā)十分便利。這里首先推薦個人常用的一些插件:
Python:必裝的插件,提供了Python語言支持;
Code Runner:支持運(yùn)行文件中的某些片段;
此外,在 VScode 上使用 Spark 就不需要使用 findspark 包了,可以直接進(jìn)行編程:
from pyspark importSparkContext,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
總結(jié)
以上所述是小編給大家介紹的Linux下搭建Spark 的 Python 編程環(huán)境的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
Linux inotify監(jiān)聽文件狀態(tài)的操作方法
Inotify 是一個 Linux特性,它監(jiān)控文件系統(tǒng)操作,比如讀取、寫入和創(chuàng)建。這篇文章給大家介紹了Linux inotify監(jiān)聽文件狀態(tài)的相關(guān)知識,需要的朋友參考下吧2018-02-02Mac OS X/Linux系統(tǒng)下清除DNS緩存命令整理
在不同的系統(tǒng)中刷新DNS緩存的方法如下:Mac OS X 系統(tǒng),終端輸入: sudo dscacheutil -flushcache,Linux系統(tǒng),終端輸入: /etc/init.d/nscd restart,感興趣的你可以參考下2013-02-02在linux7.1上安裝jdk+tomcat+oracle9i筆記
在linux7.1上安裝jdk+tomcat+oracle9i筆記...2006-10-10Ubuntu16安裝Tomcat8.5和MySQL5.7的教程
這篇文章主要介紹了Ubuntu16安裝Tomcat8.5和MySQL5.7的教程,需要的朋友可以參考下2017-04-04Linux系統(tǒng)中xorg.conf文件詳細(xì)介紹
以下是對Linux系統(tǒng)中的xorg.conf文件進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08