繁体   English   中英

如何在 hdinsight spark 中将 python 版本从 2.7 更改为 3.5

[英]how to change python version from 2.7 to 3.5 in hdinsight spark

我有一个运行 Spark 的 Azure HDInsightCluster 并验证它当前正在使用其默认的 Python 版本 2.17。 但是,根据 MS 文档,可以将其更改为 3.5,因为 Python 2.17 和 3.5 都是 Spark 2.4 (HDI 4.0) 支持的 Python 版本。

我尝试在 Ambari GUI 中将以下值添加到 Advanced pyspark2-env:

export PYSPARK_PYTHON=/usr/bin/anaconda/envs/py35/bin/python
export MY_TEST_ENV=this_is_a_test_if_this_gets_executed

但是在 Spark 中运行代码时,我可以看到它仍然使用 Python 2.7 !

此外,我在 Advanced spark2-env 中输入的任何内容似乎都没有被执行:当我在我的 spark 工作中尝试这个时:

import sys
import os 
from pyspark import SparkContext, SparkConf
 
if __name__ == "__main__":
    
    # create Spark context with necessary configuration
    conf = SparkConf().setAppName("WordCount").set("spark.hadoop.validateOutputSpecs", "false")
    sc = SparkContext(conf=conf)
    print(os.environ["PYSPARK_PYTHON"])
    print(os.environ["PYSPARK_DRIVER_PYTHON"])
    print(os.environ["MY_TEST_ENV"])

我得到以下 output:

/usr/bin/anaconda/bin/python
/usr/bin/anaconda/envs/py35/bin/python
Traceback (most recent call last):
  File "wordcount.py", line 12, in <module>
    print(os.environ["MY_TEST_ENV"])
  File "/usr/bin/anaconda/envs/py35/lib/python3.5/os.py", line 725, in __getitem__
    raise KeyError(key) from None
KeyError: 'MY_TEST_ENV'

我找到了解决方案。

在配置部分自定义 spark2-defaults我必须将用于变量spark.yarn.appMasterEnv.PYSPARK_PYTHON的条目覆盖到/usr/bin/anaconda/envs/py35/bin/python3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM