我正在使用两个配置单元表(一个阶段包含6.16亿个数据,另一个表日志记录为30亿个数据)在spark中执行scd type2。随机播放0的输出位置。
在Spark UI上进行搜索时,我得到了以下更多详细信息: ExecutorLostFailure(执行程序20退出,原因是正在运行的任务之一)原因:容器因超出内存限制而被YARN杀死。已使用9.2 GB的9 GB物理内存。考虑提高spark.yarn.executor.memoryOverhead。
Stg数据分区为241,日记数据分区为2047。 我正在对stg和journal数据进行完全外部联接,然后根据键列将数据框重新分区为2047个分区。然后将该数据帧缓存到内存和磁盘级别。
下面是spark-submit命令:
export DEPLOY_MODE=cluster
export DRIVER_MEMORY=8G
export EXECUTOR_MEMORY=8G
export NUM_EXECUTORS=20
export RESULT_SIZE=6G
export EXECUTOR_CORES=5
export MAIN_CLASS=pkg.abc
export JAR=/home/spark/abc-0.0.1-SNAPSHOT.jar
export QUEUE=abs
export batch_job_id=1
export incremental_load_dt=2018-09-18
/spark2/bin/spark-submit --class ${MAIN_CLASS}
--queue ${QUEUE}
--conf spark.sql.inMemoryColumnarStorage.compress=true
--conf spark.akka.frameSize=100
--conf spark.max.fetch.failure.per.stage=5
--conf spark.sql.qubole.split.computation=true
--conf spark.yarn.executor.memoryOverhead=1G
--conf spark.memory.fraction=0.8
--conf spark.memory.storageFraction=0.0
--conf spark.shuffle.io.maxRetries=5
--conf spark.network.timeout=800s
--conf spark.reducer.maxReqsInFlight=1
--conf spark.shuffle.io.retryWait=300s
--conf spark.shuffle.io.maxRetries=10
--jars /home/abc-0.2.2.jar
--deploy-mode ${DEPLOY_MODE}
--files ${HIVE_SITE_XML_PATH}
--master yarn
--driver-memory ${DRIVER_MEMORY}
--executor-cores ${EXECUTOR_CORES}
--executor-memory ${EXECUTOR_MEMORY}
--num-executors ${NUM_EXECUTORS} ${JAR} ${batch_job_id} ${incremental_load_dt}
Any help will be appreciated.
谢谢。