關於Executor:
一個executor同時只能執行一個計算任務
但一個worker(物理節點)上可以同時運行多個executor
executor的數量決定了同時處理任務的數量
一般來說,分區數遠大於executor的數量才是合理的
同一個作業,在計算邏輯不變的情況下,分區數和executor的數量很大程度上決定了作業運行的時間
初始化SparkSession
scala版本
import org.apache.spark.sql.SparkSession val spark = SparkSession.builder().master("yarn-client").appName("New SS").config("spark.executor.instances","10").config("spark.executor.memory","10g").getOrCreate() import spark.implicits._
在代碼中,我們通過配置指明了spark運行環境時的yarn,並以yarn-client的方式提交作業(yarn還支持yarn-cluster的方式,區別在於前者driver運行在客戶端,后者driver運行在yarn的container中)。我們一共申請了10個executer,每個10g。
python版本
from pyspark.sql import SparkSession spark = SparkSession.builder.master("yarn-client").appName("New SS").config("spark.executor.instances","10").config("spark.executor.memory","10g").getOrCreate()