我正在使用Spark SQL(1.5.1)在Spark Shell中运行JOIN查询。数据包含大量行,JOIN查询从未成功。无论如何,如果我使用相同的数据集在Hive上使用Hive SQL进行处理,一切都很顺利。所以我的配置可能有问题
从控制台输出,我找到了
" [第二阶段:=========================> (92 + 54)/ 200] 15/10/29 14:26:23错误YarnScheduler:在cn233.local上丢失执行者1:远程Rpc客户端解除关联"
在此基础上,Spark默认在配置spark.shuffle.partitions的基础上启动了200个执行程序,这肯定消耗了所有内存,因为我有一个小集群
那么如何解决这个问题呢?
答案 0 :(得分:1)
客户端解除关联的错误主要发生在Spark执行程序内存不足的情况下。您可以尝试以下选项
增加执行程序内存
- executor-memory 20g
如果您的应用程序使用大量JVM内存,您也可以尝试调整内存开销。
- conf spark.yarn.executor.memoryOverhead = 5000
尝试调整akka framesize,(默认为100MB)
- conf spark.akka.frameSize = 1000
您可能也想尝试使用较小的块大小来输入数据。这将增加任务,并且每个任务将使用较少的数据,这可能会阻止执行程序运行到OutOfMemory。