场景:联接 Apache Hive 会导致 Azure HDInsight 中出现 OutOfMemory 错误

本文介绍在 Azure HDInsight 群集中使用交互式查询组件时出现的问题的故障排除步骤和可能的解决方案。

问题

Apache Hive 联接的默认行为是将表的全部内容加载到内存中,以便无需执行 Map/Reduce 步骤即可执行联接。 如果 Hive 表太大而无法放入内存中,则查询可能会失败。

原因

在足够大的 Hive 中运行联接时,会遇到以下错误:

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded error.

解决方法

通过设置以下 Hive 配置值,防止 Hive 在联接时将表加载到内存中(而不是执行 Map/Reduce 步骤):

hive.auto.convert.join=false

后续步骤

如果设置此值不能解决问题,请访问以下...

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。