在Centos 使用anaconda中的jupyter notebook连接Spark时报错py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled 在 JVM 中不存在
解决办法这是未正确设置环境变量导致的。
Centos设置:编辑~/ .bashrc 文件:
注意:请勿复制和粘贴以下行,因为您的 Spark 版本可能与下面提到的不同。
export SPARK_HOME=/opt/spark-3.0.0-bin-hadoop2.7 export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH export PATH=$SPARK_HOME/bin:$SPARK_HOME/python:$PATH
设置环境变量并刷新环境变量(centos使用source命令)后,重新启动jupyter notebook。
运行代码:
from pyspark import SparkContext
from pyspark import SparkConf
print(0)
conf = SparkConf().setMaster("spark://hadoop102:7077").setAppName("test")
sc = SparkContext(conf=conf)
print(1)
logData = sc.textFile("file:///opt/module/hadoop-2.7.2/test/orders.txt").cache()
print(logData.collect())
print("num of a",logData)
sc.stop()
运行截图:
请打开环境变量窗口,然后在下面添加/更新。
SPARK_HOME => /opt/spark-3.0.0-bin-hadoop2.7; PYTHonPATH => %SPARK_HOME%/python;%SPARK_HOME%/python/lib; PATH => %SPARK_HOME%/bin;%SPARK_HOME%/python;
设置环境变量后,重新启动工具或命令提示符。
运行以下代码
from pyspark import SparkContext
from pyspark import SparkConf
print(0)
conf = SparkConf().setAppName('test').setMaster('local[*]')
sc = SparkContext(conf=conf)
print(1)
logData = sc.textFile(r"D:文档英语英语六级议论文作文模板.txt").cache()
print(logData.collect())
print("num of a",logData)
sc.stop()
运行截图:
参考:https://stackoverflow.com/questions/53217767/py4j-protocol-py4jerror-org-apache-spark-api-python-pythonutils-getencryptionen



