Spark 是 运行 python 3.7.6,但 spark 上下文显示 python 2.7。如何使用 spark 上下文修复?

Spark is running python 3.7.6 but spark context is showing python 2.7. How to fix using the spark context?

我已经使用 sc.install_pypi_package("sagemaker==2.5.1") 安装了 sagemaker。但是,当我尝试导入 sagemaker 并且它指向 python2.7.

时出现以下错误

我检查了我的 EMR 主节点 运行 pyspark,那里的版本是 pyspark 2.4.5 运行 python 3.7.6.

然后我尝试升级我的 spark 上下文的 python 版本,但它说

"ValueError: Package already installed for current Spark context!"

所以我想让我尝试从 spark context 中卸载 python2.7 但我不这样做,说

"Not uninstalling python at /usr/lib64/python2.7/lib-dynload, outside environment /tmp/1598628537004-0"

我做错了什么?我相信 sagemaker 导入失败是由于 spark 上下文引用 python2.7。我该如何解决这个问题?

参考此 link 并将 spark 上下文的 python 版本更新为 python3。这解决了问题:

%%configure -f
{ "conf":{
          "spark.pyspark.python": "python3",
          "spark.pyspark.virtualenv.enabled": "true",
          "spark.pyspark.virtualenv.type":"native",
          "spark.pyspark.virtualenv.bin.path":"/usr/bin/virtualenv"
         }
}