PysparkNote001---Mac下JupyterNoteBook配置pyspark

网友投稿 1212 2022-09-02

PysparkNote001---Mac下JupyterNoteBook配置pyspark

PysparkNote001---Mac下JupyterNoteBook配置pyspark

下面这一通设置只是在我的电脑上走通了,参考性存疑。可以多看看文中的参考文章。

每一次安装环境都是伤筋动骨的,心塞塞。由于线上zeppline实在是不太友好,而且和集群相关联,怕有所影响。所以本地安装pyspark,以便学习所用。

1. 环境

Mac:macOS High Sierra 10.13.4Spark:spark-2.3.0-bin-hadoop2.6

2. Spark安装

2.1 java安装

比较坑爹,之前学app爬虫,装的jdk10,spark好像不支持。建议安装jdk8,stackoverflow有讨论,可参看​​  报错信息为:

py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.

2.2 Spark-

官网地址:​​。   官网-速度感人,可以选择清华镜像​​​Spark安装

安装本身没有问题,只需要把文件解压缩在指定目录下,比如我把文件解压在​​/Users/Simple/Coding/Spark/​​下。下面需要添加环境变量,添加代码为:

# 查看配置文件cat ~/.bash_profile# 用vi命令添加环境变量# add sparkexport SPARK_HOME=/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6export PATH="$PATH:${SPARK_HOME}/bin"

添加完环境变量后要执行以下命令:

source ~/.bash_profile

在shell下输入​​pyspark​​​即可。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vi1jyvq8-1575010408400)(pic0.jpg)]

3 Pyspark相关配置

3.1 python解释器的选择

最开始,pyspark默认的解释器应该为系统自带的python解释器,在我的Mac中python为python2.7,python3为Python3.6

3.2 在Jupyter Notebook中使用Pyspark

有几种方式,分别介绍。

3.2.1 在代码里添加路径

该方法不依赖jupyter,pycharm等都可以使用。选择pyspark对应的解释器,创建一个新的jupyter notebook。在​​import pyspark​​时,先执行以下代码:

import osimport sysos.environ['SPARK_HOME'] = "/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6"sys.path.append("/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6/python")sys.path.append("/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6/python/lib/py4j-0.10.7-src.zip")from pyspark import SparkContextfrom pyspark import SparkConfsc = SparkContext('local')words = sc.parallelize(["scala", "java", "hadoop", "spark", "akka"])print(words.count())

5

3.2.2 利用findspark包

直接调包,显得整洁一点。

import findsparkfindspark.init()from pyspark import SparkContextfrom pyspark import SparkConfsc = SparkContext()words = sc.parallelize(["scala", "java", "hadoop", "spark", "akka"])print(words.count())sc.stop()

5

3.2.3 修改配置文件

修改配置文件如下:

export PYSPARK_DRIVER_PYTHON=jupyterexport PYSPARK_DRIVER_PYTHON_OPTS="notebook"

此时在命令行输入​​pyspark​​​跳到​​jupyter​​​中。不过还是不太方便,最好的方式应该是在jupyter中可以选择,类似选择​​python2、python2、R​​这样最方便了。

3.2.4 添加pyspark的kernel

暂时说不出来为啥这么做,但是似乎可行,能用。在anaconda3安装目录​​anaconda3/share/jupyter/kernels​​​新建文件夹​​spark2​​​,该文件下新增​​json​​文件,文件内容为:

{"argv": ["/Users/Simple/Coding/Py-Software/anaconda3/envs/python2/anaconda2/bin/python", "-m", "IPython.kernel", "-f", "{connection_file}"], "display_name":"PySpark2", "language":"python" , "env": { "SPARK_HOME": "/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6", "PYTHONPATH": "/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6/python:/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6/python/lib/py4j-0.10.6-src.zip", "PYTHONSTARTUP": "/Users/Simple/Coding/Spark/spark-2.3.0-bin-hadoop2.6/python/pyspark/shell.py ", "PYSPARK_SUBMIT_ARGS": "pyspark-shell" }}

大概就是如此,反正可以用。具体可以参考:​​​[1] 乱七八糟的坑

4.1 终端执行pyspark

在终端执行​​pyspark​​​时,会出现​​derby.log、metastore_db​​​两个文件,也不知道这是啥,总之,在​​/User​​​下会出现就是了。可以把他们放在指定目录下,在​​spark/conf​​​下执行编辑​​spark-default.conf​​​文件,如果没有复制对应​​template​​文件即可。

spark.local.dir /Users/Simple/Coding/Spark/spark2.3-localdata SPARK_LOCAL_DIRS /Users/Simple/Coding/Spark/spark2.3-localdata spark.eventLog.dir /Users/Simple/Coding/Spark/spark2.3-localdata/logdata ## 前面是设置临时文件啥的,改变derby用下面的spark.driver.extraJavaOptions -Dderby.system.home=/Users/Simple/Coding/Spark/spark2.3-localdata/derby_data

参考:​​jupyter中执行

jupyter中执行代码,会出现莫名其妙的文件夹,最后目录为spark-warehouse,可以改下设置,同样的,不知道为啥这么改,醉了。接触的越多,感受自己的局限性越大。

spark.sql.warehouse.dir /Users/simple/Coding/Spark/spark2.3-localdata/warehouse

参考:​​https://stackoverflow.com/questions/44781067/how-do-i-launch-pyspark-and-arrive-in-an-ipython-shell/44810603#44810603​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:二分类模型评价指标-Python实现
下一篇:架构设计:标准Web系统的架构分层(web基础架构设计原则)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~