Spark SQL>加入(随机播放)>加入查询总是失败,因为"执行程序失败"

时间:2015-10-29 12:31:46

标签: apache-spark

我正在使用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个执行程序,这肯定消耗了所有内存,因为我有一个小集群

那么如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

客户端解除关联的错误主要发生在Spark执行程序内存不足的情况下。您可以尝试以下选项

增加执行程序内存

  

- executor-memory 20g

如果您的应用程序使用大量JVM内存,您也可以尝试调整内存开销。

  

- conf spark.yarn.executor.memoryOverhead = 5000

尝试调整akka framesize,(默认为100MB)

  

- conf spark.akka.frameSize = 1000

您可能也想尝试使用较小的块大小来输入数据。这将增加任务,并且每个任务将使用较少的数据,这可能会阻止执行程序运行到OutOfMemory。