
# 配置Hive表分区动态覆盖
#### 操作场景
Hive的分区表将数据按照指定的分区字段（如日期、地域等）存储在不同的目录下。动态分区覆盖功能允许用户在插入数据时，基于查询结果动态确定要覆盖的分区，无需提前静态指定所有分区值。当执行insert overwrite语句时，Hive会根据查询结果中的分区字段值，找到对应的分区目录，先删除该目录下原有数据，再写入新数据，从而实现分区数据的更新。
在旧版本中，使用insert overwrite语法覆写分区表时，仅支持对指定的分区表达式进行匹配，未指定表达式的分区将被全部删除。在Spark2.3版本中，增加了对未指定表达式的分区动态匹配的支持，此种语法与Hive的动态分区匹配语法行为一致。
#### 配置参数
1. 登录FusionInsight Manager系统。 
   详细操作请参考[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   
2. 选择"集群 \> 服务 \> Spark2x/Spark \> 配置"，单击"全部配置"，搜索并调整以下参数。 
   
   | **参数**                                   | **参数说明**                                                                                                                                                                                                                                                                                                                       | 取值示例    |
   |:---|:---|:---|
   | spark.sql.sources.partitionOverwriteMode | 当前执行insert overwrite命令插入数据到分区表时，支持两种模式：STATIC模式和DYNAMIC模式。 - STATIC模式下，Spark会按照匹配条件删除所有分区。  - DYNAMIC模式下，Spark按照匹配条件匹配分区，并动态匹配没有指定匹配条件的分区。   | DYNAMIC |
      
   
   
3. 修改参数配置后，单击"保存"，根据界面提示操作后，等待配置保存成功。
4. Spark服务端配置更新后，如果"配置状态"为"配置过期"，则需重启组件以使配置生效。 
   图1修改Spark配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002305123224.png "点击放大")
   在Spark服务概览页面，选择"更多 \> 重启服务/滚动重启服务"，验证管理员密码后，等待服务重启成功。
   如果使用Spark客户端提交任务，修改了集群的参数"spark.sql.sources.partitionOverwriteMode"后，需要重新下载客户端才能使配置生效，请参考[使用MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2126.html)。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/warning_3.0-zh-cn.png)
   组件重启期间将无法对外提供服务，可能会影响集群的上层业务正常运行，请在业务空闲期或确认操作无影响后再执行本操作。
   
   
 
