MapReduce服务 MRS-执行复杂SQL语句时报“Code of method ... grows beyond 64 KB”的错误:回答
回答
在开启钨丝计划(即tungsten功能)后,Spark对于部分执行计划会使用codegen的方式来生成Java代码,但JDK编译时要求Java代码中的每个函数的长度不能超过64KB。当执行一个很复杂的SQL语句时,例如有多层语句嵌套,且单层语句中对字段有大量的逻辑处理(如多层嵌套的case when语句),这种情况下,通过codegen生成的Java代码中函数的大小就可能会超过64KB,从而导致编译失败。
规避措施:
当出现上述问题时,用户可以通过关闭钨丝计划,关闭使用codegen的方式来生成Java代码的功能,从而确保语句的正常执行。即在客户端的“spark-defaults.conf”配置文件中将“spark.sql.codegen.wholeStage”配置为“false”。
- MapReduce服务_如何使用MapReduce服务_MRS集群客户端安装与使用
- MapReduce服务_什么是Hue_如何使用Hue
- 什么是Spark_如何使用Spark_Spark的功能是什么
- 数据安全-数据库安全-数据库审计工具
- GaussDB最大容量_gaussdb基于_高斯数据库最大容量_华为云
- MapReduce服务_什么是Hive_如何使用Hive
- 大数据分析是什么_使用MapReduce_创建MRS服务
- GaussDB监控_GaussDB数据库监控_高斯数据库监控_华为云
- 数据治理中心_数据开发_数据开发能力_脚本和节点介绍-华为云
- GaussDB免费数据库_GaussDB哪家好_免费高斯数据库