2017-03-28 30 views
0

我配置了Eclipse以便使用Spark和Python进行开发。 我配置了: 1. PyDev与Python解释器 2. PyDev与Spark Python源码 3. PyDev与Spark的环境变量。在Eclipse上没有名为py4j.protocol的模块(PyDev)

这是我的图书馆配置:

enter image description here

这是我的环境配置:

enter image description here

我创建了一个名为CompensationStudy项目,我想运行一个小例子,确保一切顺利。

enter image description here

这是我的代码:

from pyspark import SparkConf, SparkContext 
import os 

sparkConf = SparkConf().setAppName("WordCounts").setMaster("local") 
sc = SparkContext(conf = sparkConf) 


textFile = sc.textFile(os.environ["SPARK_HOME"] + "/README.md") 
wordCounts = textFile.flatMap(lambda line: line.split()).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b) 
for wc in wordCounts.collect(): print wc 

但我得到这个错误:导入错误:没有模块名为py4j.protocol

Logicly,所有PySpark的库的依赖,包括当我使用Spark Python源代码配置PyDev时,Py4J会自动导入。所以,这里有什么问题?我的log4j.properties文件有问题吗? 请帮忙!

回答

0

你能够从命令行运行它吗?我认为第一步就是让IDE不受这个问题的影响,因此,试着让命令行中的适当环境变量运行一切(也许向pyspark社区寻求帮助),在运行之后,尝试比较env你运行的变量在命令行运行(创建一个程序运行env变量并在控制台中运行,然后在IDE中检查差异)。

一个说明(这可能不是问题,但仍...):从你的截图,似乎你的项目配置有/CompensationStudy添加到PYTHONPATH,然而,你似乎是把你的代码/CompensationStudy/src(所以,你应该编辑你的项目配置,只将/CompensationStudy/src放在PYTHONPATH中)。

0

有类似的错误。

安装py4j,能够执行没有错误

sudo pip install py4j