我正在尝试使用pyspark
下面的一些问候词级别的示例来学习Spark。我收到“方法isBarrier([])不存在”错误,代码下面包含了完整错误。
from pyspark import SparkContext
if __name__ == '__main__':
sc = SparkContext('local[6]', 'pySpark_pyCharm')
rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8])
rdd.collect()
rdd.count()
尽管如此,当我直接在命令行中启动pyspark会话并键入相同的代码时,它仍然可以正常工作:
我的设置:
答案 0 :(得分:2)
问题是Spark JVM库的版本与PySpark之间不兼容。通常,PySpark版本必须与您的Spark安装版本完全匹配(理论上,匹配主要版本和次要版本就足够了,维护版本have been introduced in the past中有些不兼容)。
换句话说,Spark 2.3.3与PySpark 2.4.0不兼容,您必须将Spark升级到2.4.0或将PySpark降级到2.3.3。
总体PySpark并非旨在用作独立库。尽管PyPi package是一个方便的开发工具(安装软件包通常比手动扩展PYTHONPATH
容易得多),但对于实际部署,最好坚持与实际Spark部署捆绑在一起的PySpark软件包。
答案 1 :(得分:0)
尝试使用以下命令启动python脚本/会话
import findspark
findspark.init()
会根据spark安装目录更新sys.path。为我工作。
答案 2 :(得分:0)
尝试使用Java 8(而不是较新版本),并使用
安装findsparkpip install findspark
然后尝试在python脚本/ session的开头导入它
import findspark
findspark.init()
from pyspark import SparkContext
这对我有用!