gpt4 book ai didi

apache-spark - 如果 Spark 在 Yarn 上运行,如何获取 SparkContext?

转载 作者:行者123 更新时间:2023-12-04 04:48:16 24 4
gpt4 key购买 nike

我们有一个基于 Spark 独立的程序,在这个程序中我们使用 SparkContextSqlContext做很多查询。

现在我们想将系统部署在运行在 Yarn 上的 Spark 上。但是当我们修改spark.masteryarn-cluster ,应用程序抛出一个异常说这适用于 spark-submit仅键入。当我们切换到 yarn-client ,虽然它不再抛出异常,但它不能正常工作。

看来如果在 Yarn 上运行,我们不能再使用 SparkContext为了工作,我们应该使用类似 yarn.Client 的东西, 但是这样我们不知道如何改变我们的代码来实现我们在使用 SparkContext 之前所做的事情和 SqlContext .

有没有解决这个问题的好方法?我们可以得到SparkContext来自 yarn.Client或者我们应该更改我们的代码以使用 yarn.Client 的新接口(interface)?

谢谢!

最佳答案

当您在 cluster 上运行时,您需要像这样进行 spark-submit

./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \

--master 将是 yarn
--deploy-mode 将是集群

在您的应用程序中,如果您有类似 setMaster("local[]") 的内容,则可以将其删除并构建代码。当您使用 --Master yarn 进行 spark-submit 时,yarn 将为您启动容器,而不是 spark-standalone 调度程序。

您的应用代码可以在没有任何 Master 设置的情况下看起来像这样
 val conf = new SparkConf().setAppName("App Name")
val sc = new SparkContext(conf)

当您想从正在运行的代码在同一台机器上启动驱动程序时,使用 yarn 部署模式客户端。在集群上,部署模式应该是集群,这将确保驱动程序通过 yarn 在一个工作节点上启动。

关于apache-spark - 如果 Spark 在 Yarn 上运行,如何获取 SparkContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32072332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com