pyspark:方法isBarrier([])不存在

时间:2019-03-04 17:21:28

标签: python apache-spark pyspark

我正在尝试使用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()

enter image description here

尽管如此,当我直接在命令行中启动pyspark会话并键入相同的代码时,它仍然可以正常工作:

enter image description here

我的设置:

  • Windows 10 Pro x64
  • python 3.7.2
  • spark 2.3.3 hadoop 2.7
  • pyspark 2.4.0

3 个答案:

答案 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(而不是较新版本),并使用

安装findspark
pip install findspark

然后尝试在python脚本/ session的开头导入它

import findspark
findspark.init()
from pyspark import SparkContext

这对我有用!