0
json4s
을 사용하여 사용자 정의 개체의 RDD에 5 테라 바이트의 json을 읽으려고합니다. 각각 약 100MB의 파일이 50,000 개 있습니다. 어떤 이유로, Executor 크기를 16G로 설정하면 다음 오류가 발생합니다. 다음과 같이Spark - JSON을 구문 분석하는 동안 작업 스케줄러 오류가 발생했습니다
ERROR TaskSchedulerImpl: Lost executor foo on bar: Remote RPC client
disassociated. Likely due to containers exceeding thresholds, or network
issues. Check driver logs for WARN messages.
내 코드는 다음과 같습니다 데이터의 연주회의 수백 읽을 때
val input = sc.textFile(inPath)
val operations = input.mapPartitions(row => {
row.flatMap(record => {
try {
implicit val formats = DefaultFormats // formats not serializable
Some(parse(record).extract[MyClass])
} catch {
case e: Exception => None
}
})
})
나는이 문제를하지 않습니다. 집행자 메모리를 55G로 늘리면 작동하지만 비효율적 인 것처럼 보입니다. 각 압축 파일은 결국 100MB이며 압축 해제 된 파일은 1GB를 초과 할 수 없습니다. 나는 8 기가비트 또는 심지어 4 기가 바이트 집행 인 톤을 돌려서 데이터를 읽을 수있을 것이라고 생각했을 것이다.
스파크가 메모리 내에서 계산됩니다. 많은 양의 데이터가 있다면 많은 양의 메모리가 필요합니다. –
더 많은 유언 집행자를 통해 달성 할 수 없었습니까? 단일 집행자에게 왜 더 많은 메모리가 필요합니까? – Luke
그 원인은 무엇입니까? '직접 버퍼 메모리'오버플로 또는 다른 메모리 섹션 오버플로가 원인입니까? 하나 이상의 문제점이있는 경우 제공 한 오류 메시지가 표시 될 수 있습니다. 전체 오류 세부 사항을 제공하십시오. –