当前位置: 代码迷 >> 综合 >> macos/jupyter/spark 报错:[Errno 8] nodename nor servname provided, or not known
  详细解决方案

macos/jupyter/spark 报错:[Errno 8] nodename nor servname provided, or not known

热度:18   发布时间:2024-02-22 06:36:04.0

问题描述:在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

评论区也有一些其他尝试,可以自行看一下

  相关解决方案