我有一个大小为260GB的输入文件,并且我的Spark集群内存容量为140 gb,运行我的spark作业后,默认情况下120的多余数据将存储到磁盘,或者我应该使用一些存储级别来指定它。
我尚未尝试任何解决方案来解决此问题。
def main(args: Array[String]){
val conf:SparkConf = new SparkConf().setAppName("optimize_1").setMaster("local")
val sc:SparkContext = new SparkContext(conf)
val myRDD = sc.parallelize( List(("1", "abc", "Request"), ("1", "cba", "Response"), ("2", "def", "Request"), ("2", "fed", "Response"), ("3", "ghi", "Request"), ("3", "ihg", "Response")) )
val myRDD_1 = sc.parallelize( List(("1", "abc"), ("1", "cba"), ("2", "def"), ("2", "fed"), ("3", "ghi"), ("3", "ihg")) )
myRDD_1.map(x=>x).groupBy(_._1).take(10).foreach(println)
myRDD_1.groupByKey().foreach(println) }
以下是小数据的预期工作输出:
(2,CompactBuffer(def, fed))
(3,CompactBuffer(ghi, ihg))
(1,CompactBuffer(abc, cba))
但是在大规模应用时,我会收到以下错误:
“ Dspark.ui.port = 0” -Dspark.yarn.app.container.log.dir = / hadoop / yarn / log / application_1555417914353_0069 / container_e05_1555417914353_0069_02_000009 -XX:OnOutOfMemoryError ='kill%p'org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark:// CoarseGrainedScheduler @ DOSSPOCVM1:33303 --executor-id 8 --hostname DOSSPOCVM1 --cores 1 --app-id application_1555417914353_0069 --user-class-path文件:$ PWD / app .jar 1> / hadoop / yarn / log / application_1555417914353_0069 / container_e05_1555417914353_0069_02_000009 / stdout 2> / hadoop / yarn / log / application_1555417914353_0069 / container_e05_1555417914353_0069_02_000009 / stderr“”
错误YarnClusterScheduler:在DOSSPOCVM2上丢失了执行程序17:容器 标记为失败:主机上的container_e05_1555417914353_0069_02_000019: DOSSPOCVM2。退出状态:-100。诊断:容器已在 丢失节点
请提出解决此问题的方法