

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 启用 Hive EMRFS S3 优化提交程序
<a name="hive-optimized-committer"></a>

Hive EMRFS S3 优化提交器是 EMR Hive 在利用 EMRFS 时为插入查询写入文件所用的另一种方式。提交程序消除了在 Amazon S3 上执行的列表和重命名操作，并提高了应用程序性能。该功能可在 EMR 5.34 和 EMR 6.5 及更高版本中使用。

## 启用提交程序
<a name="enabling-hive-committer"></a>

如果您想启用 EMR Hive 以使用 `HiveEMRFSOptimizedCommitter` 提交数据作为所有 Hive 托管式表和外部表的默认值，请在 EMR 6.5.0 或 EMR 5.34.0 集群中使用以下 `hive-site` 配置。

```
[
   {
      "classification": "hive-site",
      "properties": {
         "hive.blobstore.use.output-committer": "true"
      }
   }
]
```

**注意**  
请勿在 `hive.exec.parallel` 设置为 `true` 时启动此功能。

## 限制
<a name="hive-committer-limitations"></a>

下面是适用于 标签的基本限制：
+ 不支持启用 Hive 自动合并小文件。即使启用了优化提交程序，也会使用默认的 Hive 提交逻辑。
+ 不支持 Hive ACID 表。即使启用了优化提交程序，也会使用默认的 Hive 提交逻辑。
+ 写入的文件的文件命名术语从 Hive 的 `<task_id>_<attempt_id>_<copy_n>` 更改为 `<task_id>_<attempt_id>_<copy_n>_<query_id>`。例如，文件命名为 

  `s3://warehouse/table/partition=1/000000_0` 将更改为 `s3://warehouse/table/partition=1/000000_0-hadoop_20210714130459_ba7c23ec-5695-4947-9d98-8a40ef759222-1`。此 `query_id` 是用户名、时间戳和 UUID 的组合。
+ 当自定义分区位于不同的文件系统（HDFS、S3）时，此功能将自动禁用。即使启用，也会使用默认的 Hive 提交逻辑。