如何在远程 Spark 集群上运行本地 Python 脚本?

Posted

技术标签:

【中文标题】如何在远程 Spark 集群上运行本地 Python 脚本?【英文标题】:How do I run a local Python script on a remote Spark cluster? 【发布时间】:2018-11-02 16:17:16 【问题描述】:

我在 Jupyter 笔记本中运行了一个本地 Python 脚本,该脚本在我的机器上运行的本地 Spark 集群上运行作业:

sc = pyspark.SparkContext(appName="test")
sqlCtx = pyspark.SQLContext(sc)

如何将其更改为连接字符串,以便在 AWS 中的 EMR Spark 集群上运行作业?

这可能吗,还是我必须在通过 SSH 连接到远程集群时使用 spark-submit 功能?

【问题讨论】:

如果你可以在远程集群中访问spark-shell,那是可能的,或者你需要去spark-submit 【参考方案1】:

你必须使用spark-submit。我不相信您可以将本地脚本连接到 EMR 集群,因为您的主节点需要是本地的。

这里有一个类似的帖子可能会有所帮助:How to connect to Spark EMR from the locally running Spark Shell 但是,如果您希望重复使用代码,则将 Spark 作业添加为 EMR 步骤只是提交代码的另一种方式。

如果您的目标是在 EMR 集群上使用 Jupyter notebook,请参阅此处。 https://aws.amazon.com/blogs/big-data/running-jupyter-notebook-and-jupyterhub-on-amazon-emr/

【讨论】:

【参考方案2】:

如果您想使用 Jupyter 笔记本并希望在远程 EMR 集群上运行您的代码,您也可以使用 EMR 笔记本。

更多信息在这里:https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks.html

【讨论】:

以上是关于如何在远程 Spark 集群上运行本地 Python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 IntelliJ IDEA 向远程 Spark 集群提交代码

Spark 本地连接远程服务器上带有kerberos认证的Hive

关于在本地idea当中提交spark代码到远程的错误总结(第一篇)

多节点火花集群上的 spark-shell 无法在远程工作节点上旋转执行程序

在远程集群上从 Spark 运行 hive 查询时,客户端无法通过以下方式进行身份验证:[TOKEN, KERBEROS]

使用 Spark 查询位于远程集群上的 Hive 数据