React 前端框架助力企业快速适应数字化转型的挑战与机遇
1212
2022-09-02
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~