Spark 소스 코드 읽 기\#1:SparkConf 상세 설명
13105 단어 빅 데이터
저희 Spark 코드 는 시작 이 이 렇 습 니 다.
val conf: SparkConf = new SparkConf().setAppName("app").setMaster("local[2]")
코드 와 공식 설명 을 통 해 알 수 있 듯 이 SparkConf 는 Spark 응용 프로그램의 설정 클래스 로 KV 구조의 Spark 인 자 를 설정 하 는 데 사 용 됩 니 다.그것 은 또 다음 과 같은 기초 적 특성 을 가지 고 있다.
new SparkConf()
형식의 매개 변 수 를 자동 으로 응용 에 설정 합 니 다.단,set 방법 을 통 해 직접 설정 한 속성 우선 순 위 는 자바 인자(resource)보다 높 습 니 다.Spark.*
방식 으로 시스템 매개 변 수 를 불 러 오 는 과정 을 건 너 뛸 수 있 습 니 다.2.주요 함수
2.1 구조 방법
class SparkConf(loadDefaults: Boolean) extends Cloneable with Logging with Serializable {
import SparkConf._
/** Create a SparkConf that loads defaults from system properties and the classpath */
def this() = this(true)
private val settings = new ConcurrentHashMap[String, String]()
//......
}
우선
new SparkConf(false)
이 도입 한 동반 대상 은 다음 과 같은 방법 이 있다.그 다음은
import SparkConf._
으로 스 파 크 설정 항목 의 용기 로 안전 한 맵 입 니 다.2.2 reader&loadFromSystemProperties
@transient private lazy val reader: ConfigReader = {
val _reader = new ConfigReader(new SparkConfigProvider(settings))
_reader.bindEnv((key: String) => Option(getenv(key)))
_reader
}
}
settings
은 게 으 른 로 딩 방법 으로 마지막 으로 reader
대상 을 되 돌려 줍 니 다.이 대상 은 설정 매개 변수 와 매개 변수 형식의 교 체 를 읽 는 데 도움 을 주 는 역할 을 합 니 다.읽 은 매개 변 수 는 접두사 에 따라 세 가지 로 나 뉜 다.ConfigReader
대상 을 만 들 때 ConfigReader
대상 이 들 어 왔 습 니 다.이 대상 은 앞에서 언급 한 Spark 매개 변수 용기 SparkConfigReader
을 봉 인 했 습 니 다.이 는 접두사 없 는 설정 항목 으로 settings
에서 이 종 류 는 하나의 Map 형식의 속성 bings 를 상기 세 가지 매개 변수 로 하 는 용 기 를 구 조 했 고 클래스 에 도 해당 하 는 매개 변수 유형의 bind 방법 으로 파 라 메 터 를 bings 에 주입 하여 마지막 으로 bings 의 형식 을 통일 적 으로 교체 했다.매개 변수 교 체 는 정규 표현 식 을 사용 하여 매개 변 수 를
ConfigReader
형식 으로 바 꾸 었 습 니 다.마지막 으로 돌아 오 는 reader 는 실행 할 때 다른 클래스 에서 해당 get 방법 으로 설정 파 라 메 터 를 가 져 옵 니 다.
private[spark] def get[T](entry: ConfigEntry[T]): T = {
entry.readFrom(reader)
}
if (loadDefaults) {
loadFromSystemProperties(false)
}
private[spark] def loadFromSystemProperties(silent: Boolean): SparkConf = {
// Load any spark.* system properties
for ((key, value) <- Utils.getSystemProperties if key.startsWith("spark.")) {
set(key, value, silent)
}
this
}
그 다음은
prefix:name
입 니 다.바로 처음에 언급 한 자바 인 자 를 불 러 오 는 것 입 니 다.클래스 의 유일한 매개 변수 인 loadDefaults 는 자바 인 자 를 불 러 오 는 지 여 부 를 제어 하 는 것 입 니 다.방법 내 부 는 loadFromSystemProperties
으로 시작 하 는 인 자 를 옮 겨 다 니 며 set 방법 으로 spark.
에 주입 합 니 다.2.3 set 방법
private[spark] def set(key: String, value: String, silent: Boolean): SparkConf = {
if (key == null) {
throw new NullPointerException("null key")
}
if (value == null) {
throw new NullPointerException("null value for " + key)
}
if (!silent) {
logDeprecationWarning(key)
}
settings.put(key, value)
this
}
set 방법 은 key 나 value 가 비어 있 는 것 을 허용 하지 않 습 니 다.그렇지 않 으 면 빈 포인터 이상 을 던 집 니 다.silent 속성 은 매개 변수 가 만 료 되 었 는 지 판단 하고 마지막 으로
setttings
에 넣 습 니 다.this 를 되 돌려 주면 문장 시작 예시 코드 인 set 방법 을 체인 으로 호출 할 수 있 습 니 다.그 밖 에 자주 사용 하 는 settings
과 다른 setMaster,setAppName
측 이 마지막 으로 호출 한 것 은 모두 위의 기초 set 방법 이다.2.4 get 방법
def getOption(key: String): Option[String] = {
Option(settings.get(key)).orElse(getDeprecatedConfig(key, settings))
}
setXX
에서 얻 은 값 을 Option 으로 되 돌려 줍 니 다.settings
에 해당 하 는 key 가 없 으 면 동반 대상 의 방법 으로 만 료 된 설정 항목 인지 찾 습 니 다.다른 패키지 의 get 방법,예 를 들 어 기본 값 을 가 진 get,각종 유형의 get 을 가 져 오 는 등 최종 호출 은 settings
입 니 다.2.5 vaidate Settings 방법
원본 코드 가 너무 길 면 붙 이지 않 습 니 다.이 방법 은 일부 특수 매개 변 수 를 검사 하고 warn 을 인쇄 할 것 입 니 다.또한 JVM 매개 변수 와 메모리 매개 변수의 합 법성 을 검증 할 것 입 니 다.논 리 는 비교적 간단 합 니 다.
3.총화
getOption
은 각종 매개 변 수 를 가 져 오고 설정 하 는 데 사용 되 며 마지막 으로 매개 변수 로 SparkConf
에 들 어 갑 니 다.SparkContext
은 프로그램의 전체 입구 입 니 다.SparkContext
이 정의 한 설정 매개 변 수 를 받 아들 인 후에 초기 화 작업 을 시작 한 다음 에 프로그램 을 실행 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark 의 -- Spark Submit 제출 프로그램 상세 설명이 스 크 립 트 는 Spark 류 경로 (classpath) 와 응용 프로그램 의존 패 키 지 를 설정 할 수 있 고 서로 다른 Spark 가 지원 하 는 클 러 스 터 관리 와 배치 모드 를 설정 할 수 있 습 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.