如何从 SparkR 会话中设置 YARN 队列?

How to set a YARN queue from within a SparkR session?

如果我使用 SparkR(不是 spark-submit)初始化 Spark 会话,像这样...

library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sparkR.session()

有没有办法设置队列?我试过这样的事情:

sparkR.session(queue = "queue_name") 

但似乎没有用。我在 SparkR 中成功使用队列的唯一方法是使用已弃用的 init() 函数:

sc <- SparkR::sparkR.init(master = "yarn-client", sparkEnvir = list(spark.yarn.queue="queue-name")) 
hiveContext <- sparkRHive.init(sc)

但这会引发警告:'SparkR::sparkR.init' is deprecated.

这如何转化为 sparkR.session()

启动spark R时,Spark Session已经生成。 您需要停止当前会话并启动一个新会话以设置所需的设置。

我使用以下

sparkR.stop()
sparkR.session(
    # master="local[2]",              # local master
    master="yarn",                    # cluster master
    appName="my_sparkR",
    sparkConfig=list(
        spark.driver.memory="4g",
        spark.executor.memory="2g",
        spark.yarn.queue="your_desired_queue"
    )
)

从 Spark 监控页面验证设置是否已正确更新。