首页 > 解决方案 > 在纱线上使用 python 3.x 运行 spark 2.3

问题描述

我正在尝试使用 spark-submit 运行示例 pi.py,但出现以下错误,

Python 3.6.5
[GCC 4.3.4 [gcc-4_3-branch revision 152973]] on linux
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
  File "/var/lib/spark/python/pyspark/shell.py", line 31, in <module>
    from pyspark import SparkConf
  File "/var/lib/spark/python/pyspark/__init__.py", line 110, in <module>
    from pyspark.sql import SQLContext, HiveContext, Row
  File "/var/lib/spark/python/pyspark/sql/__init__.py", line 45, in <module>
    from pyspark.sql.types import Row
  File "/var/lib/spark/python/pyspark/sql/types.py", line 27, in <module>
    import ctypes
  File "Python-3.6.5_suse/lib/python3.6/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: libffi.so.4: cannot open shared object file: No such file or directory

我是 python 和 spark 的新手,但是当我将 spark-defaults.sh 中的 PYSPARK_PYTHON 路径设置为一些旧版本的 python(如 3.3.x)时,它工作得非常好。

我是否设置错误或我确实需要任何其他库?这看起来像图书馆问题。

谢谢!

标签: apache-sparkpysparkpython-3.6

解决方案


我发现了问题所在!我的小型纱线集群有不同的操作系统主机,一些 suse 的一些 centos 的,当我在 spark-env.sh 中设置 PYSPARK_PYTHON 时,该配置有一个中央 python 路径,因此库不匹配,它抛出了 libffi.so 错误。因此,根据 lib python 路径检查主机操作系统的类型很有帮助。一旦我设置了正确的路径并运行,

./bin/spark-submit --deploy-mode client examples/src/main/python/pi.py

然后我可以验证本地库是否设置正确。我不需要按照评论或其他答案中的建议安装任何其他 python 库,例如 pyspark 或 py4j。


推荐阅读