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

ttp71kqs  于 2023-11-16  发布在  Spark
关注(0)|答案(2)|浏览(116)

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

2wnc66cl

2wnc66cl1#

你需要给予python 3的完整路径,比如:

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

字符串

mdfafbf1

mdfafbf12#


的数据

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

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

  • 解决方案 *:

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

from pyspark.sql import SparkSession
os.environ['PYSPARK_PYTHON'] = sys.executable
os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable
# Initialize Spark session
spark = SparkSession.builder \
    .appName("String to CSV") \
    .getOrCreate()

字符串

相关问题