在PySpark中设置YARN队列:交互式作业队列配置方法咨询
刚好在交互式分析场景里碰到过这个问题,没法用spark-submit的话,这两个方法完全可以解决你的需求:
方法1:初始化SparkConf时直接指定队列
如果你习惯用传统的SparkContext来初始化,可以在构建配置对象的时候加入队列参数:
from pyspark import SparkConf, SparkContext # 先构建配置,指定目标队列 conf = SparkConf() \ .setAppName("Jupyter_Exploratory_Analysis") \ .set("spark.yarn.queue", "your_low_load_queue") # 替换成你要使用的队列名称 # 用配置创建Spark Context sc = SparkContext(conf=conf)
这个方式最直接,Spark启动时会读取这个配置,自动把作业投递到你指定的队列里,不会再用默认队列。
方法2:通过SparkSession指定队列(推荐交互式场景)
现在PySpark更推荐用SparkSession来做交互式分析,同样可以在创建Session的时候配置队列:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Interactive_Data_Exploration") \ .config("spark.yarn.queue", "your_low_load_queue") \ .getOrCreate() # 如果需要SparkContext,直接从Session里获取即可 sc = spark.sparkContext
这种方式和上面的原理一致,只是更贴合现在的PySpark使用习惯,尤其是做DataFrame分析的时候更方便。
几个注意点
- 确认你指定的队列名称真实存在,并且你有该队列的访问权限,不然作业可能会被集群拒绝
- 如果之前已经创建过SparkContext/SparkSession,记得先调用
sc.stop()或者spark.stop(),再重新初始化,不然新的队列配置不会生效 - 部分集群可能有队列的资源配额限制,提前确认目标队列有足够的资源供你的交互式作业使用
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

