问题描述:在MAC OS 上用jupyter运行spark时,出现错误 sc is not defined,很奇怪这玩意还要defined 吗,后来根据其他blog的描述下载了 findspark ,查出了错误 gaierror: [Errno 8] nodename nor servname provided, or not known
基本就是锁定问题关键在mac自己不知道自己主机叫啥名字上了。
解决流程可以按照我的试一试,试到哪一步能解决了就可以。基本上是搜集了网络上部分的解决方案。
一、安装 findspark
没有pip3用别的也行
pip3 install findspark
然后输入以下进行测试
import findspark
findspark.init()import os
import sys
spark_name = os.environ.get('SPARK_HOME',None)
if not spark_name:raise ValueErrorError('spark环境没有配置好')
sys.path.insert(0,os.path.join(spark_name,'python'))
sys.path.insert(0,os.path.join(spark_name,'python/lib/py4j-0.10.6-src.zip'))
#(python/lib/py4j-0.10.6-src.zip位于D:spark-2.3.0-bin-hadoop2.7中python文件夹中lib文件夹内,请根据自己的版本更改)
exec(open(os.path.join(spark_name,'python/pyspark/shell.py')).read())
以上代码来源于博客jupyter notebook中使用pyspark环境配置以及导入SC报错问题解决
然后博主他可以快乐玩耍而我:
就很伤。
二、再次启动pyspark
一共有两种在jupyter上的引用方案:
PYSPARK_DRIVER_PYTHON="jupyter" PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark
或者:
####使用anaconda打开jupyter notebook,在文档中输入下列内容即可
import findspark
findspark.init()from pyspark import SparkContext, SparkConf
事实上,在终端 pyspark
启动时,我就发现了这个:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[W 18:04:30.687 NotebookApp] 不能绑定到localhost, 使用127.0.0.1作为默认的IP [Errno 8] nodename nor servname provided, or not known
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[W 18:04:30.687 NotebookApp] 不能绑定到localhost, 使用127.0.0.1作为默认的IP
[Errno 8] nodename nor servname provided, or not known
大概就锁定在hosts出了毛病
三、修改hostname
这并不是spark特有的错误,而是Mac上使用java常见的一个问题,是application在查询主机对应的ip地址时无法查询到ip地址。
终端输入
hostname
就会返回你的主机名字
但一开始返回的是我ip地址…
重设主机名:
sudo scutil --set HostName 你想要的主机名字
加入叫xiaoming
sudo scutil --set HostName xiaoming
之后再
hostname
试一下有无成功
之后打开 /private/etc/ 文件夹下,找到hosts文件,不带任何扩展名的那个 hosts
默认是用文本编辑器打开
我们是无法直接修改hosts文件,但修改hosts文件可以先拖到一个地方,比如桌面上,会自动复制。
加上
127.0.0.1 xiaoming
(注意xiaoming的位置是你设置的主机名字)
四、127.0.0.1 localhost
大部分人到这一步应该解决了问题,但是…我还是报了这个错。
随手试了一下把原来127.0.0.1 xiaoming
的位置改成
127.0.0.1 localhost
成功了!
补充方法
部分方法在这里找到的
大概博主有尝试这几种:
Rebooting.
Switching off the Firewall.
Changing my local hostname, using System Preferences > Sharing > Edit.
sudo killall -HUP mDNSResponder
dscacheutil -flushcache
sudo launchctl unload -w
/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w
/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
评论区也有一些其他尝试,可以自行看一下