无法在 HDInsight 中使用 JDBC/ODBC 和 Apache Thrift 软件框架下载大型数据集
本文介绍在 Azure HDInsight 群集中使用 Apache Spark 组件时出现的问题的故障排除步骤和可能的解决方案。
尝试在 Azure HDInsight 中使用 JDBC/ODBC 和 Apache Thrift 软件框架下载大型数据集时,收到如下错误消息:
org.apache.spark.SparkException: Kryo serialization failed:
Buffer overflow. Available: 0, required: 36518. To avoid this, increase spark.kryoserializer.buffer.max value.
此异常由尝试使用超出允许的缓冲区空间的序列化进程引起。 在 Spark 2.0.0 中,通过 Apache Thrift 软件框架访问数据时,org.apache.spark.serializer.KryoSerializer
类用于序列化对象。 将通过网络发送或以序列化格式缓存的数据使用不同的类。
增加 Kryoserializer
缓冲区值。 添加名为 spark.kryoserializer.buffer.max
的密钥,并在 spark2 配置的 Custom spark2-thrift-sparkconf
下将其设置为 2047
。 重启所有受影响的组件。
重要
spark.kryoserializer.buffer.max
的值必须小于 2048。 不支持小数值。
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道以获取更多支持:
- 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。