创建 AWS EMR 后,向每个集群安装更多 Python 包/库

Man*_*roj 6 amazon-emr apache-spark pyspark jupyterhub

我最近在 JupyterHub 上使用 Spark 和 PySpark。据我所知,在创建 EMR 之前,我可以设置引导程序来设置每个集群中的环境,例如 Python 包/库。但是如果我已经启动了 EMR,如何在不重新启动 EMR 的情况下安装更多 Python 包/库?

我搜索并得到了一些答案,我可以通过 Jupyterhub 中的单元安装它。例如,

%%spark
sc.install_pypi_package("matplotlib")
Run Code Online (Sandbox Code Playgroud)

我尝试过但出现错误

RuntimeError: install_pypi_packages can only use called when spark.pyspark.virtualenv.enabled is set to true
Run Code Online (Sandbox Code Playgroud)

因此,我尝试/usr/lib/spark/conf/spark-defaults.conf通过将此行添加到该文件中来在主集群上设置该配置。

"spark.pyspark.virtualenv.enabled": "true"
Run Code Online (Sandbox Code Playgroud)

但不起作用,JupyterHub仍然返回错误。

所以我想知道

  1. 当我已经启动 EMR 并想要向集群安装更多 Python 包/库时,最佳实践是什么?

  2. 在创建 EMR 之前如何配置"spark.pyspark.virtualenv.enabled": "true"或可以在软件设置中进行设置?

先感谢您。

小智 8

我遇到了同样的问题。这是我必须在调用上方作为新块插入的内容sc.install_pypi_package()

%%configure -f
{
    "conf": {
        [other configs relevant to your situation],
        "spark.pyspark.python": "python3",
        "spark.pyspark.virtualenv.enabled": "true",
        "spark.pyspark.virtualenv.type":"native",
        "spark.pyspark.virtualenv.bin.path":"/usr/bin/virtualenv"
    }
}
Run Code Online (Sandbox Code Playgroud)

灵感来自https://aws.amazon.com/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/