spark - проблема с пространством кучи Java - ExecutorLostFailure - контейнер вышел со статусом 143 - PullRequest
0 голосов
/ 30 июня 2018

Я читаю строку длиной более 100 Кбайт и разделяю столбцы по ширине. У меня есть столбцы размером около 16K, которые я разделил сверху на строку по ширине.

но при написании в паркет я использую код ниже

rdd1=spark.sparkContext.textfile("file1")

{ var now=0
 { val collector= new array[String] (ColLenghth.length) 
 val recordlength=line.length
for (k<- 0 to colLength.length -1)
 { collector(k) = line.substring(now,now+colLength(k))
 now =now+colLength(k)
 }
 collector.toSeq}


StringArray=rdd1.map(SubstrSting(_,ColLengthSeq))
#here ColLengthSeq is read from another schema file which is column lengths



StringArray.toDF("StringCol").select(0 until ColCount).map(j=>$"StringCol"(j) as column_seq(j):_*).write.mode("overwrite").parquet("c"\home\")

здесь ColCount = 16000, а column_seq - это seq (строка) с именами столбцов 16K.

Я работаю на Yarn с 16 ГБ памяти и 20 исполнителями.
Размер файла составляет 4 ГБ.

Я получаю ошибку как

Lost task 113.0 in stage 0.0 (TID 461, gsta32512.foo.com): ExecutorLostFailure (executor 28 exited caused by one of the running tasks) Reason: 
Container marked as failed: 
container_e05_1472185459203_255575_01_000183 on host: gsta32512.foo.com. Exit status: 143. Diagnostics: 
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal

когда я проверял статус в интерфейсе пользователя, его показ

#java.lang.outofmemoryerror java heap space
#java.lang.outofmemoryerror gc overhead limit exceeded

Пожалуйста, руководство по настройке производительности вышеупомянутого кода и оптимизации параметров отправки искры

...