202110201026 - pyspark设置参数

使用pyspark提交spark任务时,为提高单个任务使用的CPU核数(默认是1),需对参数进行设置。spark-submit --help中可以指定的参数有限,需要在代码中指定参数值。如下:

conf = SparkConf()
conf.setAppName('test_mean_shift')
conf.set('spark.task.cpus', '5')

sc = SparkContext(conf=conf)


遇到的问题:

Executor cores must not be less than spark.task.cpus

--executor-cores 默认值是1 

分配executor的资源,然后内部分配task。
例如executor.cores设置为10,默认情况下可启动10个task
若设置task.cpus为5,则可启动2个task


参考自:

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession


def create_sc():
    sc_conf = SparkConf()
    sc_conf.setMaster('spark://master:7077')
    sc_conf.setAppName('my-app')
    sc_conf.set('spark.executor.memory', '2g')  #executor memory是每个节点上占用的内存。每一个节点可使用内存
    sc_conf.set("spark.executor.cores", '4') #spark.executor.cores:顾名思义这个参数是用来指定executor的cpu内核个数,分配更多的内核意味着executor并发能力越强,能够同时执行更多的task
    sc_conf.set('spark.cores.max', 40)    #spark.cores.max:为一个application分配的最大cpu核心数,如果没有设置这个值默认为spark.deploy.defaultCores
    sc_conf.set('spark.logConf', True)    #当SparkContext启动时,将有效的SparkConf记录为INFO。
    print(sc_conf.getAll())

    sc = SparkContext(conf=sc_conf)

    return sc
from pyspark.conf import SparkConf
conf=SparkConf()
        conf.set('spark.sql.execute.arrow.enabled','true')
        if os.getenv("APP_MODE") == 'prod':
            """
            集群环境
            """
            url = 'spark://master:7077'
            conf.setAppName('prod-practice-info').setMaster(url).set("spark.driver.maxResultSize", "12g").set("spark.executor.memory", '4g')
        else:
            """
            本地环境
            """
            print("本地环境")
            url = 'local[*]'
            conf.setAppName('prod-practice-info').setMaster(url)
        spark = SparkSession.builder. \
            config(conf=conf).\
            getOrCreate()

posted @ 2025-03-20 19:36  钱塘江畔  阅读(51)  评论(0)    收藏  举报