Pyspark在yarn集群模式下不使用python3,即使使用PYSPARK_PYTHON=python3

3b6akqbq  于 2023-10-14  发布在  Python
关注(0)|答案(2)|浏览(84)

我在www.example.com中使用ambari设置了PYSPARK_PYTHON=python3spark-env.sh,当我在命令行中尝试'pyspark'时,它会在python 3.4.3中运行。但是,当我使用yarn集群模式提交作业时,它使用python 2.7.9运行。如何使用Python 3?

w51jfk4q

w51jfk4q1#

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

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

gk7wooem2#

x1c 0d1x * 说明:* 在Python驱动程序中,SparkContext使用Py 4J启动JVM并创建JavaSparkContext。Py 4J仅用于Python和Java SparkContext对象之间的本地通信;通过不同的机制执行大数据传输。
Python中的RDD转换Map到Java中的PythonRDD对象上的转换。在远程工作机器上,*PythonRDD对象启动Python子进程,并使用管道与它们通信,发送用户的代码和要处理的数据 *。

  • 解决方案 *:就在创建spark session之前,使用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()

相关问题