PySpark 在 Yarn 集群模式下不使用 Python 3,即使使用 PYSPARK_PYTHON=python3

问题描述 投票:0回答:2

我使用 Ambari 在 Spark-env.sh 中设置了 PYSPARK_PYTHON=python3,当我在命令行上尝试“pyspark”时,它会使用 Python 3.4.3 运行。但是,当我使用 Yarn 集群模式提交作业时,它使用 Python 2.7.9 运行。如何让它使用 Python 3?

python apache-spark pyspark ambari
2个回答
0
投票

您需要提供 python3 的完整路径,例如:

subprocess.call(['export PYSPARK_PYTHON=/usr/local/bin/python2.7'],shell=True)

0
投票

说明:在Python驱动程序中,SparkContext使用Py4J来启动JVM并创建JavaSparkContext。 Py4J 仅在驱动程序上用于 Python 和 Java SparkContext 对象之间的本地通信;大数据传输是通过不同的机制执行的。

Python 中的 RDD 转换映射到 Java 中的 PythonRDD 对象的转换。在远程工作计算机上,PythonRDD 对象启动 Python 子进程并使用管道与它们通信,发送用户的代码和要处理的数据

解决方案

在创建 Spark 会话之前,使用 Python 中的环境变量,就像下面的示例代码片段中一样:

从 pyspark.sql 导入 SparkSession
os.environ['PYSPARK_PYTHON'] = sys.executable
os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable
# 初始化 Spark 会话
火花 = SparkSession.builder \
    .appName("字符串到 CSV") \
    .getOrCreate()
© www.soinside.com 2019 - 2024. All rights reserved.