Linux环境下Jupyter Notebook无法运行PySpark问题求助
PySpark运行报错:UnknownHostException 解决方法
问题描述
在未联网的本地服务器上尝试在Jupyter Notebook中运行PySpark,已通过以下命令安装PySpark和Java:
conda install pyspark-3.3.0-pyhd8ed1ab_0.tar.bz2 conda install openjdk-8.0.332-h166bdaf_0.tar.bz2
在Notebook中执行!java -version结果如下:
openjdk version "1.8.0_332" OpenJDK Runtime Environment (Zulu 8.62.0.19-CA-linux64) (build 1.8.0_332-b09) OpenJDK 64-Bit Server VM (Zulu 8.62.0.19-CA-linux64) (build 25.332-b09, mixed mode)
执行!which java得到:
/root/anaconda3/bin/java
运行的PySpark代码:
import os os.environ['SPARK_HOME'] = "/root/anaconda3/pkgs/pyspark-3.3.0-pyhd8ed1ab_0/site_packages/pyspark" os.environ['JAVA_HOME'] = "/root/anaconda3" os.environ['PYSPARK_SUBMIT_ARGS'] = "--master local[2] pyspark-shell" from pyspark import SparkConf, SparkContext conf = SparkConf().set('spark.driver.host','127.0.0.1') sc = SparkContext(master='local', appName='Test', conf=conf)
报错片段:
Exception in thread "main" java.lang.ExceptionInInitializerError at org.apache.spark.deploy.SparkSubmitArguments.$anonfun$loadEnvironmentArguments$3(SparkSubmitArguments.scala:157) ... Caused by: java.net.UnknownHostException: abc: abc: Name or service not known ... Caused by: java.net.UnknownHostException: abc: abc: Name or service not known ... Runtime Error: Java gateway process exited before sending its port number
其中abc为服务器主机名。
解决步骤
修改/etc/hosts文件,添加主机名解析映射
错误根源是服务器无法解析自身主机名abc,需要手动添加IP与主机名的对应关系:- 打开hosts文件:
vi /etc/hosts - 在文件中添加一行(选择其中一种即可):
127.0.0.1 abc # 若服务器有固定内网IP,也可替换为实际IP,例如: # 192.168.1.100 abc - 保存并退出编辑。
- 打开hosts文件:
验证配置
执行ping abc命令,若能正常收到回包,说明解析配置生效。之后重新运行Jupyter Notebook中的PySpark代码即可。额外检查(可选)
你的JAVA_HOME配置是正确的,因为java命令位于/root/anaconda3/bin下,JAVA_HOME设为/root/anaconda3符合规范,无需修改。
内容的提问来源于stack exchange,提问作者Rayne
相关产品推荐
相关产品推荐

