更新时间:2022-12-14 GMT+08:00

Spark应用下修改split值时报错

用户问题

在Spark应用下修改split值时报错。

问题现象

客户需要通过修改一个split最大值来实现多个mapper ,从而达到提速的目的, 但是目前执行set $参数命令修改Hive的配置时报错。

0: jdbc:hive2://192.168.1.18:21066/> set mapred.max.split.size=1000000;
Error: Error while processing statement: Cannot nodify mapred.max.split.size at runtime. It is not in list of params that are allowed to be modified at runtime( state=42000,code=1)

原因分析

  • 在安全模式下配置白名单启停参数hive.security.whitelist.switch时,需要运行的参数必须在hive.security.authorization.sqlstd.confwhitelist 中配置。

  • 默认白名单中没有包含mapred.max.split.size参数,所以运行的时候会提示不允许。

处理步骤

  1. 进入Hive服务配置页面:

    • MRS 2.0.1之前版本,登录MRS Manager,选择“服务管理 > Hive > 服务配置”,单击“基础配置”下拉菜单,选择“全部配置”。
    • MRS 2.0.1及之后版本,在MRS控制台单击集群名称,选择“组件管理 > Hive > 服务配置”,单击“基础配置”下拉菜单,选择“全部配置”。

      若集群详情页面没有“组件管理”页签,请先完成IAM用户同步(在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步)。

    • MRS 3.x及后续版本,登录FusionInsight Manager,然后选择“集群 > 待操作的集群名称 > 服务 > Hive > 配置 > 全部配置”。

  2. 搜索hive.security.authorization.sqlstd.confwhitelist.append,把mapred.max.split.size加进hive.security.authorization.sqlstd.confwhitelist.append中,详细信息可参考组件操作指南 > > 使用Hive > 从零开始使用Hive
  3. 修改完成后,保存配置,重启Hive组件。
  4. 执行set mapred.max.split.size=1000000;,系统不再报错,则表示修改成功。