

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

# Apache Hive
<a name="emr-hive"></a>

Hive 是一种开源数据仓库和分析软件程序包，基于 Hadoop 集群运行。Hive 脚本使用称为 Hive QL（查询语言）的类似于 SQL 的语言，对编程模型进行抽象，并支持典型的数据仓库交互。Hive 使您能够避免基于有向无环图 (DAGs) 或使用较低级别计算机语言（例如 Java）的 MapReduce 程序编写 Tez 作业的复杂性。

Hive 通过包含序列化格式来扩展 SQL 范例。您也可以通过创建与您的数据匹配的表架构自定义查询处理，而无需接触到数据本身。SQL 仅仅支持原始值类型（如日期、数字和字符串）；与此相反，Hive 表中的值是结构化元素，如 JSON 对象、任何用户定义的数据类型或以 Java 编写的任何函数。

有关 Hive 的更多信息，请参阅 [http://hive.apache.org/](http://hive.apache.org/)。

下表列出了 Amazon EMR 7.x 系列的最新发行版附带的 Hive 的版本，以及 Amazon EMR 随 Hive 一起安装的组件。

有关此版本中与 Hive 一起安装的组件的版本，请参阅 [7.12.0 版本](emr-7120-release.md)的组件版本。


**emr-7.12.0 的 Hive 版本信息**  

| Amazon EMR 发行版标签 | Hive 版本 | 随 Hive 安装的组件 | 
| --- | --- | --- | 
| emr-7.12.0 | Hive 3.1.3-amzn-21 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 

下表列出了 Amazon EMR 6.x 系列的最新发行版附带的 Hive 的版本，以及 Amazon EMR 随 Hive 一起安装的组件。

有关此发行版中随 Hive 安装的组件版本，请参阅[发行版 6.15.0 组件版本](emr-6150-release.md)。


**emr-6.15.0 的 Hive 版本信息**  

| Amazon EMR 发行版标签 | Hive 版本 | 随 Hive 安装的组件 | 
| --- | --- | --- | 
| emr-6.15.0 | Hive 3.1.3-amzn-8 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 

下表列出了 Amazon EMR 5.x 系列的最新发行版附带的 Hive 的版本，以及 Amazon EMR 随 Hive 一起安装的组件。

有关此发行版中随 Hive 安装的组件版本，请参阅[发行版 5.36.2 组件版本](emr-5362-release.md)。


**emr-5.36.2 的 Hive 版本信息**  

| Amazon EMR 发行版标签 | Hive 版本 | 随 Hive 安装的组件 | 
| --- | --- | --- | 
| emr-5.36.2 | Hive 2.3.9-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 

您可以使用 Amazon EMR 构件存储库构建针对特定 Amazon EMR 发行版（从 Amazon EMR 发行版 5.18.0 开始）附带的准确版本的库和依赖项的任务代码。有关更多信息，请参阅 [使用 Amazon EMR 项目存储库检查依赖项](emr-artifact-repository.md)。

**Topics**
+ [Amazon EMR 上的 Hive 的区别和注意事项](emr-hive-differences.md)
+ [为 Hive 配置外部元存储](emr-metastore-external-hive.md)
+ [使用 Hive JDBC 驱动程序](HiveJDBCDriver.md)
+ [改进 Hive 性能](emr-hive-s3-performance.md)
+ [使用 Hive Live Long and Process（LLAP）](emr-hive-llap.md)
+ [Hive 中的加密](hive-encryption.md)
+ [Hive 发行历史记录](Hive-release-history.md)

# Amazon EMR 上的 Hive 的区别和注意事项
<a name="emr-hive-differences"></a>

## Amazon EMR 上的 Apache Hive 和 Apache Hive 之间的区别
<a name="emr-hive-apache-diff"></a>

[本节介绍亚马逊 EMR 上的 Hive 与 http://svn.apache 上的 Hive 默认版本之间的区别。 org/viewvc/hive/branches](http://svn.apache.org/viewvc/hive/branches/)/。

### Hive 授权
<a name="emr-hive-authorization"></a>

 Amazon EMR 对于 HDFS 支持 [Hive 授权](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)，但对于 EMRFS 和 Amazon S3 不支持此授权。默认情况下，Amazon EMR 集群在禁用授权的状态下运行。

### Amazon S3 中的 Hive 文件合并操作
<a name="emr-hive-filemerge"></a>

如果 `hive.merge.mapfiles` 为 true，那么 Apache Hive 会在仅 map 作业结束时合并小文件，且仅在平均的作业输出大小低于 `hive.merge.smallfiles.avgsize` 设置时才会触发合并。如果最终输出路径位于 HDFS 中，那么 Amazon EMR Hive 的行为将完全相同。如果输出路径位于 Amazon S3 中，将忽略 `hive.merge.smallfiles.avgsize` 参数。在那种情况下，如果 `hive.merge.mapfiles` 设置为 `true`，会始终触发合并任务。

### ACID 事务和 Amazon S3
<a name="emr-hive-acid"></a>

Amazon EMR 6.1.0 及更高版本支持 Hive ACID（原子性、一致性、隔离、持久性）事务，因此它符合数据库的 ACID 属性。借助此功能，您可以使用 Amazon Simple Storage Service（Amazon S3）中的数据在 Hive 托管表中运行 INSERT、UPDATE、DELETE 和 MERGE 操作。

### Hive Live Long and Process (LLAP)
<a name="emr-hive-LLAP"></a>

默认 Apache Hive 版本 2.0 中添加的 [LLAP 功能](https://cwiki.apache.org/confluence/display/Hive/LLAP)在 Amazon EMR 5.0 发行版上的 Hive 2.1.0 中不受支持。

Amazon EMR 版本 6.0.0 及更高版本支持 Hive 的 Live Long and Process（LLAP）功能。有关更多信息，请参阅[使用 Hive LLAP](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-llap.html)。

## Hive 在 Amazon EMR 发行版 4.x 和 5.x 之间的不同
<a name="emr-hive-diff"></a>

本节介绍在将 Hive 实现从 Amazon EMR 4.x 发行版上的 Hive 1.0.0 版迁移到 Amazon EMR 5.x 发行版上的 Hive 2.x 之前要考虑的区别。

### 操作区别和注意事项
<a name="emr-hive-diffs-ops"></a>
+ **添加了对 [ACID（原子性、一致性、隔离和持久性）事务](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)的支持：**Amazon EMR 4.x 上的 Hive 1.0.0 和默认 Apache Hive 之间的这一区别已经消除。
+ **已消除对 Amazon S3 的直接写入：**Amazon EMR 上的 Hive 1.0.0 和默认 Apache Hive 之间的这一区别已经消除。Amazon EMR 5.x 发行版上的 Hive 2.1.0 现在会创建存储在 Amazon S3 中的临时文件、从这些文件中读取数据以及向其写入数据。因此，要读取和写入同一个表，您不再需要在集群的本地 HDFS 文件系统中创建一个临时表作为解决办法。如果您使用受版本控制的存储桶，请确保如下所述管理这些临时文件。
+ **使用 Amazon S3 受版本控制的存储桶时管理临时文件：**当您在生成数据的目的地是 Amazon S3 的环境中运行 Hive 查询时，会创建许多临时文件和目录。这是新行为，如上所述。如果您使用受版本控制的 S3 存储桶，那么不删除这些临时文件会使 Amazon S3 凌乱并产生费用。请调整生命周期规则，以便包含 `/_tmp` 前缀的数据在一个短周期 (例如，五天) 后被删除。有关更多信息，请参阅[指定生命周期配置](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。
+ **Log4j 已更新到 log4j 2**：如果您使用 log4j，则可能因为此升级而需要更改您的日志记录配置。有关更多信息，请参阅 [Apache log4j 2](http://logging.apache.org/log4j/2.x/)。

### 性能区别和注意事项
<a name="emr-hive-diffs-perf"></a>
+ **与 Tez 的性能差异：**在 Amazon EMR 5.x 版本中，Tez 是 Hive 的默认执行引擎，而不是。 MapReduceTez 为大多数工作流提供了改进的性能。
+ **具有多个分区的表：**生成大量动态分区的查询可能会失败，并且执行从具有多个分区的表中选择的查询可能需要比预期更长的时间。例如，从 100,000 个分区中进行选择可能需要 10 分钟或更长时间。

## Amazon EMR 上的 Hive 的额外功能
<a name="emr-hive-additional-features"></a>

亚马逊 EMR 对 Hive 进行了扩展，增加了支持 Hive 与其他 AWS 服务集成的新功能，例如能够读取和写入亚马逊简单存储服务 (Amazon S3) Simple Service 和 DynamoDB。

### Hive 中的变量
<a name="emr-hive-variables"></a>

 您可以使用美元符号和大括号在脚本中包括变量。

```
add jar ${LIB}/jsonserde.jar
```

 如以下示例所示，您可以在命令行上使用 `-d` 参数将这些变量的值传递给 Hive：

```
-d LIB=s3://elasticmapreduce/samples/hive-ads/lib
```

 您还可以将值传递到执行 Hive 脚本的步骤。

**使用控制台将变量值传递到 Hive 步骤**

1. [在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

1. 选择**创建集群**。

1. 在**步骤**部分中，对于 **Add Step (添加步骤)**，从列表中选择 **Hive Program (Hive 程序)**，然后选择 **Configure and add (配置并添加)**。

1.  在 **Add Step (添加步骤)** 对话框中，参考下表指定参数，然后选择**添加**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ReleaseGuide/emr-hive-differences.html)

1. 根据需要选择值，然后选择**创建集群**。

**要将变量值传递到 Hive 步骤，请使用 AWS CLI**

要使用将变量值传递到 Hive 步骤 AWS CLI，请使用`--steps`参数并包括参数列表。
+ 
**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号（^）。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
  --steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/,-d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]
  ```

  有关在中使用 Amazon EMR 命令的更多信息 AWS CLI，请参阅。[https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

**使用 Java 开发工具包将变量值传递到 Hive 步骤**
+ 以下示例演示如何使用开发工具包将变量传递到步骤。有关更多信息，请参阅 *适用于 Java 的 AWS SDK API 参考 StepFactory*中的[类](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/util/StepFactory.html)。

  ```
  StepFactory stepFactory = new StepFactory();
  
     StepConfig runHive = new StepConfig()
       .withName("Run Hive Script")
       .withActionOnFailure("TERMINATE_JOB_FLOW")
       .withHadoopJarStep(stepFactory.newRunHiveScriptStep(“s3://amzn-s3-demo-bucket/script.q”,
        Lists.newArrayList(“-d”,”LIB= s3://elasticmapreduce/samples/hive-ads/lib”));
  ```

### Amazon EMR Hive 查询可适应部分 DynamoDB 架构
<a name="emr-hive-partial-schema"></a>

在查询 DynamoDB 表时，Amazon EMR Hive 允许您指定一部分列作为数据筛选条件，而不要求您的查询包含所有列，因此可提供最大的灵活性。当采用稀疏数据库架构，并希望根据一些列来筛选记录 (例如根据时间戳筛选) 时，这种部分架构查询技术可以发挥作用。

 以下示例显示了如何使用 Hive 查询执行下列操作：
+ 创建 DynamoDB 表。
+ 选择 DynamoDB 中的一部分项目（行）并进一步将数据范围缩小到特定列。
+ 将结果数据复制到 Amazon S3。

```
DROP TABLE dynamodb; 
DROP TABLE s3;

CREATE EXTERNAL TABLE dynamodb(hashKey STRING, recordTimeStamp BIGINT, fullColumn map<String, String>)
    STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
    TBLPROPERTIES ( 
     "dynamodb.table.name" = "myTable",
     "dynamodb.throughput.read.percent" = ".1000", 
     "dynamodb.column.mapping" = "hashKey:HashKey,recordTimeStamp:RangeKey"); 

CREATE EXTERNAL TABLE s3(map<String, String>)
     ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
     LOCATION 's3://bucketname/path/subpath/';

INSERT OVERWRITE TABLE s3 SELECT item fullColumn FROM dynamodb WHERE recordTimeStamp < "2012-01-01";
```

下表显示了从 DynamoDB 中选择任意项目组合的查询语法。


| 查询范例 | 结果描述 | 
| --- | --- | 
| 从 “\$1” 中选择table\$1name； | 从指定表选择所有项目 (行) 并包括这些项目对应的所有列的数据。 | 
| 从table\$1name哪里选择 \$1 field\$1name =value; | 从指定表选择一些项目 (行) 并包括这些项目对应的所有列的数据。 | 
| 选择column1\$1name、column2\$1name、column3\$1name来自table\$1name； | 从指定表选择所有项目 (行) 并包括这些项目对应的一些列的数据。 | 
| 从 field\$1name =value; column3\$1name 中table\$1name选择column1\$1namecolumn2\$1name、、 | 从指定表选择一些项目 (行) 并包括这些项目对应的一些列的数据。 | 

### 在不同区域的 DynamoDB 表之间复制数据 AWS
<a name="emr-hive-cross-region-ddb-copy"></a>

Amazon EMR Hive 提供了可以为每个 DynamoDB 表设置的 `dynamodb.region` 属性。当两个表的 `dynamodb.region` 设置不同时，您在两个表之间执行的所有数据复制将自动在指定区域之间发生。

 以下示例显示了如何通过用于设置 `dynamodb.region` 属性的 Hive 脚本创建 DynamoDB 表：

**注意**  
每个表的 region 属性会覆盖全局 Hive 属性。

```
CREATE EXTERNAL TABLE dynamodb(hashKey STRING, recordTimeStamp BIGINT, map<String, String> fullColumn)
    STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
    TBLPROPERTIES ( 
     "dynamodb.table.name" = "myTable",
     "dynamodb.region" = "eu-west-1", 
     "dynamodb.throughput.read.percent" = ".1000", 
     "dynamodb.column.mapping" = "hashKey:HashKey,recordTimeStamp:RangeKey");
```

### 设置每个表的 DynamoDB 吞吐量值
<a name="emr-hive-set-ddb-throughput"></a>

Amazon EMR Hive 允许您在表定义中根据每个表设置 DynamoDB readThroughputPercent 和 writeThroughputPercent 设置。以下 Amazon EMR Hive 脚本显示了如何设置吞吐量值。有关 DynamoDB 吞吐量值的更多信息，请参阅[指定表的读取和写入要求](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithDDTables.html#ProvisionedThroughput)。

```
CREATE EXTERNAL TABLE dynamodb(hashKey STRING, recordTimeStamp BIGINT, map<String, String> fullColumn)
    STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
    TBLPROPERTIES ( 
     "dynamodb.table.name" = "myTable",
     "dynamodb.throughput.read.percent" = ".4",
     "dynamodb.throughput.write.percent" = "1.0",
     "dynamodb.column.mapping" = "hashKey:HashKey,recordTimeStamp:RangeKey");
```

# 为 Hive 配置外部元存储
<a name="emr-metastore-external-hive"></a>

默认情况下，Hive 会在主节点的文件系统上的 MySQL 数据库中记录元存储信息。元存储包含表以及在其上构建表的基础数据的描述，包括分区名称、数据类型等。集群终止后，所有集群节点都会关闭，包括主节点。当发生此情况时，本地数据会丢失，因为节点文件系统使用的是短暂存储。如果您需要保留元存储，则必须创建一个存在于集群外部的*外部元存储*。

对于外部元存储，您有两个选项：
+ AWS Glue 数据目录（仅限亚马逊 EMR 版本 5.8.0 或更高版本）。

  有关更多信息，请参阅 [使用 AWS Glue 数据目录作为 Hive 的元数据库](emr-hive-metastore-glue.md)。
+ Amazon RDS 或 Amazon Aurora。

  有关更多信息，请参阅 [使用外部 MySQL 数据库或 Amazon Aurora](emr-hive-metastore-external.md)。

**注意**  
如果您使用 Hive 3 并遇到 Hive 元数据仓的连接太多的问题，请将参数 `datanucleus.connectionPool.maxPoolSize` 配置为一个较小的值或增加数据库服务器可以处理的连接数。连接数量增加是因 Hive 计算 JDBC 连接的最大数量的方式所致。要计算可确保最佳性能的值，请参阅 [Hive 配置属性](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-datanucleus.connectionPool.maxPoolSize.1)。

# 使用 AWS Glue 数据目录作为 Hive 的元数据库
<a name="emr-hive-metastore-glue"></a>

使用 Amazon EMR 版本 5.8.0 或更高版本，您可以将 Hive 配置为使用 Glue 数据目录作为其元 AWS 数据库。当您需要持久的元数据仓或由不同集群、服务、应用程序和 AWS 账户共享的元数据仓时，我们建议使用此配置。

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务，它使对数据进行分类、清理、丰富数据并在各种数据存储之间可靠地移动数据变得简单且经济高效。 AWS Glue 数据目录提供了一个跨各种数据源和数据格式的统一元数据存储库，与亚马逊 EMR 以及亚马逊 RDS、Amazon Redshift、Redshift Spectrum、Athena 以及任何与 Apache Hive 元数据仓兼容的应用程序集成。 AWS Glue 爬网程序可以自动从 Amazon S3 中的源数据推断出架构，并将相关的元数据存储在数据目录中。有关数据目录的更多信息，请参阅 [AWS Glue *开发者指南中的填充 G AWS l* ue 数据目录](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html)。

Glue 需单独收 AWS 费。在数据目录中存储和访问元数据有月费率，Gl AWS ue ETL 作业和爬虫运行时按小时费率收费，每个预配置的开发端点按每分钟计费。数据目录让您最多可免费存储一百万个对象。如果您存储一百万个以上的对象，将需要为超过一百万的每 100,000 个对象支付 1 美元。数据目录中的对象为表、分区或数据库。有关更多信息，请参阅 [Glue 定价](https://aws.amazon.com/glue/pricing)。

**重要**  
如果您在 2017 年 8 月 14 日之前使用 Amazon Athena 或 Amazon Redshift Spectrum 创建了表，则数据库和表将存储在雅典娜管理的目录中，该目录与 Glue 数据目录是分开的。 AWS 要将 Amazon EMR 与这些表集成，您必须升级到 Glue 数据 AWS 目录。有关更多信息，请参阅*亚马逊 Athena AWS 用户指南中的升级到 Glue* [数据目录](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)。

## 将 AWS Glue 数据目录指定为元数据库
<a name="emr-hive-glue-configure"></a>

您可以使用 AWS 管理控制台、 AWS CLI或 Amazon EMR API 将 AWS Glue 数据目录指定为元数据库。在使用 CLI 或 API 时，您可以使用 Hive 配置分类指定数据目录。此外，在 Amazon EMR 5.16.0 及更高版本中，您可以使用配置分类在不同的目录中指定数据目录。 AWS 账户在使用控制台时，您可以使用 **Advanced Options (高级选项)** 或 **Quick Options (快速选项)** 指定数据目录。

------
#### [ Console ]

**使用控制台 AWS 将 Glue 数据目录指定为 Hive 元数据仓**

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择 **Create cluster**（创建集群）。

1. **在 “**应用程序包**” 下，选择 “**核心 Hadoop**” 或 “自**HBase**定义”。**如果您自定义集群，请确保选择 Hive 或 HCatalog 作为您的应用程序之一。

1. 在**AWS Glue 数据目录设置**下，选择**用于 Hive 表元数据**复选框。

1. 选择适用于集群的任何其他选项。

1. 要启动集群，选择 **Create cluster**（创建集群）。

------
#### [ CLI ]

**要将 AWS Glue 数据目录指定为 Hive 元数据库，请使用 AWS CLI**

有关使用 AWS CLI 和 EMR API 指定配置分类的更多信息，请参阅。[配置应用程序](emr-configure-apps.md)
+ 使用 `hive-site` 配置分类指定 `hive.metastore.client.factory.class` 的值，如下例所示：

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    }
  ]
  ```

  在 EMR 发行版 5.28.0、5.28.1、5.29.0 或 6.x 上，如果您要使用 Glue 数据目录作为元数据仓创建集群，请将 AWS 设置为。`hive.metastore.schema.verification` `false`这会阻止 Hive 和根据 M HCatalog ySQL 验证元数据仓架构。如果没有此配置，则在 Hive 或上重新配置后，主实例组将处于暂停状态。 HCatalog

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false"
      }
    }
  ]
  ```

  如果您在 EMR 发行版 5.28.0、5.28.1 或 5.29.0 上已有集群，则可以使用以下信息将主实例组 `hive.metastore.schema.verification` 设置为 `false`：

  ```
     
      Classification = hive-site
      Property       = hive.metastore.schema.verification
      Value          = false
  ```

  要在其他 AWS 账户中指定数据目录，请添加`hive.metastore.glue.catalogid`属性，如以下示例所示。将 `acct-id` 替换为数据目录的 AWS 账户。

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

------

## IAM 权限
<a name="emr-hive-glue-permissions"></a>

集群的 EC2 实例配置文件必须具有 AWS Glue 操作的 IAM 权限。此外，如果您为 AWS Glue Data Catalog 对象启用加密，则还必须允许该角色加密、解密和生成 AWS KMS key 用于加密的对象。

### AWS Glue 操作的权限
<a name="emr-hive-glue-permissions-actions"></a>

如果使用适用于 Amazon EMR 默认的 EC2 实例配置文件，则无需执行任何操作。附加到的`AmazonElasticMapReduceforEC2Role`托管策略`EMR_EC2_DefaultRole`允许执行所有必要的 AWS Glue 操作。但是，如果您指定自定义 EC2 实例配置文件和权限，则必须配置相应的 AWS Glue 操作。使用 `AmazonElasticMapReduceforEC2Role` 托管策略作为起点。如需了解更多信息，请参阅*《Amazon EMR 管理指南》*中的[集群 EC2 实例的服务角色（EC2 实例配置文件）](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)。

### 加密和解密 AWS Glue 数据目录的权限
<a name="emr-hive-glue-permissions-encrypt"></a>

您的实例配置文件需要使用密钥加密和解密数据的权限。如果以下语句适用，您*不必*配置这些权限：
+ 您可以使用 Glue 的 AWS 托管密钥为 Glue 数据目录对象启用加密。 AWS 
+ 您使用的集群与 Gl AWS ue 数据目录 AWS 账户 相同。

否则，您必须将以下语句添加到附加到 EC2 实例配置文件的权限策略。

有关 AWS Glue 数据目录加密的更多信息，请参阅 Glu [e *开发者指南中的AWS 加密*数据目录](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)。

### 基于资源的权限
<a name="emr-hive-glue-permissions-resource"></a>

如果您在亚马逊 EM AWS R 中将 Glue 与 Hive、Spark 或 Presto 结合使用， AWS Glue 支持基于资源的策略来控制对数据目录资源的访问。这些资源包括数据库、表、连接和用户定义的函数。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的 [AWS Glue 资源策略](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。

使用基于资源的策略限制从 Amazon EMR 中访问 AWS Glue 时，您在权限策略中指定的委托人必须是与创建集群时指定的 EC2 实例配置文件关联的角色 ARN。例如，对于附加到目录的基于资源的策略，您可以使用以下示例所示的格式为集群 EC2 实例*EMR\$1EC2\$1DefaultRole*的默认服务角色指定角色 ARN，如下所示：`Principal`

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id*可以与 Glue 账 AWS 号 ID 不同。这允许从不同账户中的 EMR 集群进行访问。您可以指定多个委托人，且每个委托人都可以来自不同的账户。

## 使用 AWS Glue 数据目录时的注意事项
<a name="emr-hive-glue-considerations-hive"></a>

使用 AWS Glue 数据目录作为 Hive 的元数据仓时，请考虑以下事项：
+ 不支持 JARs 使用 Hive 外壳添加辅助工具。解决方法是，使用`hive-site`配置分类来设置`hive.aux.jars.path`属性，这会 JARs将辅助属性添加到 Hive 类路径中。
+ 不支持 [Hive 事务](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)。
+ 不支持在 AWS Glue 中重命名表。
+ 当您创建 Hive 表而不指定 `LOCATION` 时，表数据存储在通过 `hive.metastore.warehouse.dir` 属性指定的位置。默认情况下，这是 HDFS 中的一个位置。如果另一个集群需要访问该表，则它将失败，除非它有足够的权限访问创建该表的集群。此外，由于 HDFS 存储是暂时性的，因此如果集群终止，表数据将丢失，并且必须重新创建该表。我们建议您在使用 AWS Glue 创建 Hive 表时`LOCATION`在 Amazon S3 中指定。此外，也可以使用 `hive-site` 配置分类来为 `hive.metastore.warehouse.dir` 指定 Amazon S3 中的位置，它适用于所有 Hive 表。如果在 HDFS 位置创建了表，并且创建该表的集群仍在运行，则可以从 Glue 中将该表的位置更新为 Amazon S3 AWS 。有关更多信息，请参阅[《Glue *开发者指南》中的 “在 AWS Glue 控制台AWS 上*使用表格](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)”。
+ 不支持包含引号和撇号的分区值，例如 `PARTITION (owner="Doe's").`
+ emr-5.31.0 及更高版本支持[列统计数据](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics)。
+ 不支持使用 [Hive 授权](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)。作为替代方案，考虑使用[基于AWS Glue 资源的策略](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。有关更多信息，请参阅[使用基于资源的策略获得 Amazon EMR 访问 Glue AWS 数据目录。](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)
+ 不支持 [Hive 约束](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Constraints)。
+ 不支持 [Hive 中基于成本的优化](https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive)。
+ 不支持设置 `hive.metastore.partition.inherit.table.properties`。
+ 不支持使用以下元存储常量：`BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION`。
+ 使用谓词表达式时，显式值必须位于比较运算符的右侧，否则查询可能会失败。
  + **正确**：`SELECT * FROM mytable WHERE time > 11`
  + **错误**：`SELECT * FROM mytable WHERE 11 > time`
+ Amazon EMR 5.32.0 和 6.3.0 及更高版本支持在谓词表达式中使用用户定义的函数 () UDFs。使用早期版本时，查询可能因 Hive 尝试优化查询执行的方式而失败。
+ 不支持[临时表](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables)。
+ 我们建议通过 Amazon EMR 使用应用程序创建表，而不是直接使用 G AWS lue 创建表。通过 AWS Glue 创建表可能会导致必填字段缺失并导致查询异常。
+ 在 EMR 5.20.0 或更高版本中，当使用 Glue Data Catalog 作为元存储时，Spark 和 Hive 会自动启用并行分区修剪。 AWS 此更改通过并行执行多个请求来检索分区，显著缩短查询计划时间。可同时执行的分段总数介于 1 到 10 之间。默认值为 5，这是建议的设置。您可以通过以下方式更改该值：指定 `hive-site` 配置分类中的属性 `aws.glue.partition.num.segments`。如果发生节流，则可以通过将值更改为 1 来关闭此功能。有关更多信息，请参阅 [AWS Glue 分段结构](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Segment)。

# 使用外部 MySQL 数据库或 Amazon Aurora
<a name="emr-hive-metastore-external"></a>

要使用外部 MySQL 数据库或 Amazon Aurora 作为 Hive 元数据仓，可以覆盖 Hive 中元数据仓的默认配置值，以指定外部数据库位置，无论是在亚马逊 RDS MySQL 实例还是 Amazon Aurora Postgre 上。SQLinstance

**注意**  
Hive 既不支持对元存储表的并发写入访问权限，也不阻止此权限。如果要在两个集群间共享元数据仓信息，您必须确保不会同时写入同一元数据仓表，除非您要写入同一元数据仓表的不同分区。

以下步骤介绍了如何覆盖 Hive 元数据仓位置的默认配置值和使用重新配置的元数据仓位置启动集群。

**创建位于 EMR 集群外的元数据仓**

1. 创建 MySQL 或 Aurora PostgreSQL 数据库。如果您使用 PostgreSQL，则必须在预置集群之后对其进行配置。创建集群时只支持 MySQL。有关 Aurora MySQL 和 Aurora PostgreSQL 之间的区别的信息，请参阅 [Amazon Aurora MySQL 概述](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Overview.html)和[使用 Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)。有关如何创建 Amazon RDS 数据库的总体信息，请参阅[https://aws.amazon.com/rds/](https://aws.amazon.com/rds/)。

1. 修改您的安全组以允许您的数据库和 **ElasticMapReduce-Master** 安全组之间的 JDBC 连接。有关如何修改安全组以进行访问的信息，请参阅[使用 Amazon EMR 托管式安全组](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html)。

1. 在 `hive-site.xml` 中设置 JDBC 配置值：
**重要**  
如果您提供敏感信息（如密码）至 Amazon EMR 配置 API，该信息将仅对拥有充分权限的账户显示。如果您担心此信息可能对其他用户显示，可通过创建以显式方式拒绝 `elasticmapreduce:DescribeCluster` API 密钥许可的角色来使用管理账户创建集群并限制其他用户 (IAM 用户或具有委派凭证的用户) 访问集群服务。

   1. 创建一个名为 `hiveConfiguration.json` 的配置文件，该文件包含对 `hive-site.xml` 的编辑，如以下示例所示。

       *hostname*替换为运行数据库的 Amazon RDS 实例的 DNS 地址，*username*并*password*替换为数据库的证书。有关连接到 MySQL 和 Aurora 数据库实例的更多信息，请参阅*《Amazon RDS 用户指南》*中的[连接到运行 MySQL 数据库引擎的数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html)和[连接到 Athena 数据库集群](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connect.html)。`javax.jdo.option.ConnectionURL` 是 JDBC 元存储的 JDBC 连接字符串。`javax.jdo.option.ConnectionDriverName` 是 JDBC 元存储的驱动程序类名。

      MySQL JDBC 驱动程序由 Amazon EMR 进行安装。

      值属性不能包含任何空格或回车。所有内容应显示在一行中。

      ```
      [
          {
            "Classification": "hive-site",
            "Properties": {
              "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true",
              "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver",
              "javax.jdo.option.ConnectionUserName": "username",
              "javax.jdo.option.ConnectionPassword": "password"
            }
          }
        ]
      ```

   1. 创建集群时引用该`hiveConfiguration.json`文件，如以下 AWS CLI 命令所示。在此命令中，此文件存储在本地，您也可将此文件上传到 Amazon S3 并在此对其进行引用，例如 `s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json`。
**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号（^）。

      ```
      aws emr create-cluster --release-label emr-7.12.0 --instance-type m5.xlarge --instance-count 2 \
      --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
      ```

1. 连接到集群的主节点。

   有关如何连接到主节点的信息，请参阅《Amazon EMR 管理指南》**中的[使用 SSH 连接到主节点](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)。

1. 通过输入类似以下内容的命令，创建在 Amazon S3 上指定位置的 Hive 表：

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS table_name
   (
   key int,
   value int
   )
   LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
   ```

1. 将 Hive 脚本添加到正在运行的集群。

您的 Hive 集群使用 Amazon RDS 中的元数据运行。通过指定该元数据仓位置，启动共享该元数据仓的所有其他 Hive 集群。

# 使用 Hive JDBC 驱动程序
<a name="HiveJDBCDriver"></a>

你可以使用流行的商业智能工具，例如微软 Excel、 MicroStrategyQlikView、和 Tableau 以及搭载 Amazon EMR 的 Tableau 来探索和可视化你的数据。许多这类工具都需要 Java 数据库连接（JDBC）驱动程序或开放式数据库连接（ODBC）驱动程序。Amazon EMR 支持通过 JDBC 和 ODBC 连接到 Spark、Hive 或 Presto 集群。

以下示例演示了使用 SQL Workbench/J 作为 SQL 客户端连接到 Amazon EMR 中的 Hive 集群。有关其他驱动程序的更多信息，请参阅[将业务情报工具与 Amazon EMR 结合使用](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-bi-tools.html)。

在安装和使用 SQL Workbench/J 之前，请下载驱动程序包并安装驱动程序。程序包中包含的驱动程序支持 Amazon EMR 发行版 4.0 及更高版本中提供的 Hive 版本。如需详细的发布说明和文档，请参阅程序包中的 PDF 文档。
+ **最新的 JDBC 和 ODBC 驱动程序包**

  [http://awssupportdatasvcs.com/bootstrap-actions/Simba/](http://awssupportdatasvcs.com/bootstrap-actions/Simba/)

**安装和配置 SQL Workbench**

1. 从下载适用于您的操作系统的 SQL Workbench/J 客户端[http://www.sql-workbench.net/downloads.html](http://www.sql-workbench.net/downloads.html)。

1. 安装 SQL Workbench/J。有关更多信息，请参阅《SQL 手册用户手册》中的[安装和启动 SQL Workbench/J](http://www.sql-workbench.net/manual/install.html)。 Workbench/J 

1. **Linux、Unix、Mac OS X 用户**：在终端会话中，使用下面的命令创建到集群主节点的 SSH 隧道。*master-public-dns-name*替换为主节点的公有 DNS *path-to-key-file* 名称以及 Amazon EC2 私有密钥 (`.pem`) 文件的位置和文件名。

   ```
   ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
   ```

   **Windows 用户**：在 PuTTY 会话中，使用 `10000` 作为 **Source port** (源端口)、使用 `master-public-dns-name:10000` 作为 **Destination** (目标) 来创建到集群主节点 的 SSH 隧道（使用本地端口转发）。将 `master-public-dns-name` 替换为主节点的公有 DNS 名称。

1. 将 JDBC 驱动程序添加到 SQL Workbench。

   1. 在 **Select Connection Profile (选择连接配置文件)** 对话框中，单击 **Manage Drivers (管理驱动程序)**。

   1. 单击 **Create a new entry (创建新条目)**（空白页）图标。

   1. 在**名称**字段中，键入 **Hive JDBC**。

   1. 对于 **Library (库)**，请单击 **Select the JAR file(s) (选择 JAR 文件)** 图标。

   1. 导航到包含提取的驱动程序的位置。选择您下载的 JDBC 驱动程序包版本中包含的驱动程序，然后单击 **Open**（打开）。

      例如，您的 JDBC 驱动程序包可能包含以下内容。JARs

      ```
      hive_metastore.jar
      hive_service.jar
      HiveJDBC41.jar
      libfb303-0.9.0.jar
      libthrift-0.9.0.jar
      log4j-1.2.14.jar
      ql.jar
      slf4j-api-1.5.11.jar
      slf4j-log4j12-1.5.11.jar
      TCLIServiceClient.jar
      zookeeper-3.4.6.jar
      ```

   1. 在 **Please select one driver (请选择一个驱动程序)** 对话框中，选择 `com.amazon.hive.jdbc41.HS2Driver`、**确定**。

1. 当您返回到 **Manage Drivers (管理驱动程序)** 对话框时，确认 **Classname (类名)** 字段已经填写，然后选择**确定**。

1. 当您返回到 **Select Connection Profile (选择连接配置文件)** 对话框时，验证**驱动程序** 字段是否设置为 **Hive JDBC**，然后在 **URL** 字段中提供以下 JDBC 连接字符串：`jdbc:hive2://localhost:10000/default`。

1. 选择**确定**进行连接。连接完成后，连接详细信息将显示在 SQL Workbench/J 窗口的顶部。

有关使用 Hive 和 JDBC 接口的更多信息，请参阅 Apache Hive 文档JDBCInterface中的[HiveClient](https://cwiki.apache.org/confluence/display/Hive/HiveClient)和 [Hive](https://cwiki.apache.org/confluence/display/Hive/HiveJDBCInterface)。

# 改进 Hive 性能
<a name="emr-hive-s3-performance"></a>

Amazon EMR 提供一些功能，有助于优化使用 Hive 查询、读取和写入保存在 Amazon S3 中的数据的性能。

S3 Select 可通过将处理“向下推送”到 Amazon S3 来提高某些应用程序中 CSV 和 JSON 文件的查询性能。

EMRFS S3 优化的提交器是该[OutputCommitter](https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/OutputCommitter.html)类的替代方案，它消除了列出和重命名操作，从而提高了使用 EMRFS 写入 Amazon S3 文件时的性能。

**Topics**
+ [启用 Hive EMRFS S3 优化提交程序](hive-optimized-committer.md)
+ [将 S3 Select 与 Hive 结合使用以提高查询性能](emr-hive-s3select.md)
+ [MSCK 优化](emr-msck-optimization.md)

# 启用 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 提交逻辑。

# 将 S3 Select 与 Hive 结合使用以提高查询性能
<a name="emr-hive-s3select"></a>

**重要**  
不再向新客户提供 Amazon S3 Select。Amazon S3 Select 的现有客户可以像往常一样继续使用该功能。[了解详情](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

对于 Amazon EMR 发行版 5.18.0 及更高版本，您可以将 [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) 与 Hive on Amazon EMR 搭配使用。S3 Select 可让应用程序仅从对象检索数据子集。对于 Amazon EMR，筛选要处理的大数据集的计算工作从集群“向下推送”到 Amazon S3，这可以在某些应用程序中提高性能和减少 Amazon EMR 与 Amazon S3 之间传输的数据量。

借助基于 CSV 和 JSON 文件的 Hive 表并在 Hive 会话期间将 `s3select.filter` 配置变量设置为 `true`，从而支持 S3 Select。有关更多信息以及示例，请参阅 [在代码中指定 S3 Select](#emr-hive-s3select-specify)。

## S3 Select 是否适合我的应用程序？
<a name="emr-hive-s3select-apps"></a>

建议您分别在使用和不使用 S3 Select 的情况下测试您的应用程序，以查看 S3 Select 是否适用于您的应用程序。

使用以下准则来确定您的应用程序是否为使用 S3 Select 的候选项：
+ 您的查询将筛选掉原始数据集的一半以上的数据。
+ 您的查询筛选谓词使用具有 Amazon S3 Select 支持的数据类型的列。有关更多信息，请参阅*《Amazon Simple Storage Service 用户指南》*中的[数据类型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html)。
+ 您在 Amazon S3 和 Amazon EMR 集群之间的网络连接具有良好的传输速度和可用带宽。Amazon S3 不压缩 HTTP 响应，因此响应大小可能会根据压缩的输入文件而增大。

## 注意事项和限制
<a name="emr-hive-s3select-considerations"></a>
+ 使用客户提供的加密密钥进行的 Amazon S3 服务器端加密（SSE-C）与客户端加密都不受支持。
+ 不支持 `AllowQuotedRecordDelimiters` 属性。如果指定该属性，则查询将失败。
+ 仅支持采用 UTF-8 格式的 CSV 和 JSON 文件。不支持多行 CSVs和 JSON。
+ 仅支持未压缩文件或 gzip、或 bzip2 文件。
+ 不支持最后一行中的注释字符。
+ 文件末尾的空行不会被处理。
+ Hive on Amazon EMR 支持 S3 Select 所支持的基元数据类型。有关更多信息，请参阅*《Amazon Simple Storage Service 用户指南》*中的[数据类型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html)。

## 在代码中指定 S3 Select
<a name="emr-hive-s3select-specify"></a>

要在 Hive 表中使用 S3 Select，请通过将 `com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat` 指定为 `INPUTFORMAT` 类名称以及使用 `TBLPROPERTIES` 子句为 `s3select.format` 属性指定一个值，来创建表。

默认情况下，S3 Select 在您运行查询时处于禁用状态。通过在您的 Hive 会话中将 `s3select.filter` 设置为 `true` 来启用 S3 Select，如下所示。下面的示例演示了如何在通过基础 CSV 和 JSON 文件创建表时指定 S3 Select，然后使用简单的 select 语句查询表。

**Example 基于 CSV 的 CREATE TABLE 语句**  

```
CREATE TABLE mys3selecttable (
col1 string,
col2 int,
col3 boolean
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS
INPUTFORMAT
  'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://path/to/mycsvfile/'
TBLPROPERTIES (
  "s3select.format" = "csv",
  "s3select.headerInfo" = "ignore"
);
```

**Example 基于 JSON 的 CREATE TABLE 语句**  

```
CREATE TABLE mys3selecttable (
col1 string,
col2 int,
col3 boolean
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS
INPUTFORMAT
  'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://path/to/json/'
TBLPROPERTIES (
  "s3select.format" = "json"
);
```

**Example SELECT TABLE 语句**  

```
SET s3select.filter=true;
SELECT * FROM mys3selecttable WHERE col2 > 10;
```

# MSCK 优化
<a name="emr-msck-optimization"></a>

Hive 在其元数据存储中存储每个表的分区列表。但是，当直接向文件系统添加分区或从文件系统中移除分区时，Hive 元数据存储不会意识到这些变化。对于直接添加到文件系统或从文件系统中移除的分区，[MSCK 命令](https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)) 会更新 Hive 元数据存储中的分区元数据。此命令的语法是：

```
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];
```

Hive 将按如下方式实现此命令：

1. Hive 从元数据存储中检索表的所有分区。然后根据文件系统中不存在的分区路径列表，创建一个要从元数据存储中移除的分区列表。

1. Hive 收集文件系统中存在的分区路径，将其与元数据存储中的分区列表进行比较，然后生成需要添加到元数据存储的分区列表。

1. Hive 使用 `ADD`、`DROP` 或 `SYNC` 模式更新元数据存储。

**注意**  
如果元数据存储中有大量分区，检查文件系统中是否存在分区的步骤需要很长时间才能完成运行，因为必须对每个分区执行文件系统的 `exists` API 调用。

在 Amazon EMR 6.5.0 中，Hive 引入了一个名为 `hive.emr.optimize.msck.fs.check` 的标记。启用此标记后，它会让 Hive 检查上面第 2 步中所生成的文件系统分区路径列表中是否存在分区，而不是调用文件系统 API。在 Amazon EMR 6.8.0 中，Hive 默认启用了此优化，无需设置标记 `hive.emr.optimize.msck.fs.check`。

# 使用 Hive Live Long and Process（LLAP）
<a name="emr-hive-llap"></a>

Amazon EMR 版本 6.0.0 支持 Hive 的 Live Long and Process（LLAP）功能。与之前的默认 Tez 容器执行模式相比，LLAP 使用具有智能内存中的缓存的持久守护进程来提高查询性能。

Hive LLAP 守护进程作为 YARN 服务进行管理和运行。由于 YARN 服务可以被视为长时间运行的 YARN 应用程序，因此您的部分集群资源专用于 Hive LLAP，不能用于其它工作负载。有关更多信息，请参阅 [LLAP](https://cwiki.apache.org/confluence/display/Hive/LLAP) 和 [YARN Service API](https://hadoop.apache.org/docs/r3.2.1/hadoop-yarn/hadoop-yarn-site/yarn-service/YarnServiceAPI.html)。

## 在 Amazon EMR 上启用 Hive LLAP
<a name="emr-llap-enable"></a>

要在 Amazon EMR 上启用 Hive LLAP，请在启动集群时提供以下配置。

```
[
  {
    "Classification": "hive",
    "Properties": {
      "hive.llap.enabled": "true"
    }
  }
]
```

有关更多信息，请参阅[配置应用程序](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)。

默认情况下，Amazon EMR 将大约 60% 的集群 YARN 资源分配给 Hive LLAP 守护进程。您可以配置分配给 Hive LLAP 的集群 YARN 资源的百分比，以及进行 Hive LLAP 分配时要考虑的任务和核心节点数。

例如，以下配置在三个任务或核心节点上启动具有三个守护进程的 Hive LLAP，并将这三个核心或任务节点的 YARN 资源的 40% 分配给 Hive LLAP 守护进程。

```
[
  {
    "Classification": "hive",
    "Properties": {
      "hive.llap.enabled": "true",
      "hive.llap.percent-allocation": "0.4",
      "hive.llap.num-instances": "3"
    }
  }
]
```

您可以使用分类 API 中的以下 `hive-site` 配置来覆盖默认的 LLAP 资源设置。


| 属性 | 说明 | 
| --- | --- | 
| hive.llap.daemon.yarn.container.mb | LLAP 守护进程容器总大小（以 MB 为单位） | 
| hive.llap.daemon.memory.per.instance.mb |  LLAP 守护进程容器中执行程序使用的总内存（以 MB 为单位）  | 
| hive.llap.io.memory.size |  LLAP 输入/输出的缓存大小  | 
| hive.llap.daemon.num.executors |  每个 LLAP 守护进程的执行程序数  | 

## 在集群上手动启动 Hive LLAP
<a name="emr-llap-manually"></a>

在集群启动过程中，LLAP 使用的所有依赖关系和配置都被打包到 LLAP tar 归档中。如果已使用 `"hive.llap.enabled": "true"` 启用 LLAP，我们建议您使用 Amazon EMR 重新配置对 LLAP 进行配置更改。

否则，对于 `hive-site.xml` 的任何手动更改，您必须使用 `hive --service llap` 命令来重建 LLAP tar 归档，如以下示例所示。

```
# Define how many resources you want to allocate to Hive LLAP

LLAP_INSTANCES=<how many llap daemons to run on cluster>
LLAP_SIZE=<total container size per llap daemon>
LLAP_EXECUTORS=<number of executors per daemon>
LLAP_XMX=<Memory used by executors>
LLAP_CACHE=<Max cache size for IO allocator>

yarn app -enableFastLaunch

hive --service llap \
--instances $LLAP_INSTANCES \
--size ${LLAP_SIZE}m \
--executors $LLAP_EXECUTORS \
--xmx ${LLAP_XMX}m \
--cache ${LLAP_CACHE}m \
--name llap0 \
--auxhbase=false \
--startImmediately
```

## 检查 Hive LLAP 的状态
<a name="emr-llap-check"></a>

通过 Hive 使用以下命令检查 Hive LLAP 的状态。

```
hive --service llapstatus
```

通过 YARN 使用以下命令检查 Hive LLAP 的状态。

```
yarn app -status (name-of-llap-service)

# example: 
yarn app -status llap0 | jq
```

## 启动或停止 Hive LLAP
<a name="emr-llap-start"></a>

由于 Hive LLAP 作为持久 YARN 服务运行，因此您可以通过停止或重新启动 YARN 服务来停止或重新启动 Hive LLAP。以下命令对此进行了演示。

```
yarn app -stop llap0
yarn app -start llap0
```

## 调整 Hive LLAP 进程守护程序的数量
<a name="emr-llap-resize"></a>

使用以下命令减少 LLAP 实例的数量。

```
yarn app -flex llap0 -component llap -1
```

有关更多信息，请参阅 [Flex a component of a service](https://hadoop.apache.org/docs/r3.2.1/hadoop-yarn/hadoop-yarn-site/yarn-service/QuickStart.html#Flex_a_component_of_a_service)。

# Hive 中的加密
<a name="hive-encryption"></a>

这一部分说明了 Amazon EMR 支持的加密类型。

# Hive 中的 Parquet 模块化加密
<a name="hive-parquet-modular-encryption"></a>

Parquet 模块化加密提供列级访问控制和加密功能，以增强以 Parquet 文件格式存储的数据的隐私和数据完整性。Amazon EMR Hive 从版本 6.6.0 起提供此功能。

有关以前支持的安全性和完整性解决方案，包括文件加密或存储层加密的信息，详见《Amazon EMR 管理指南》中的 [加密选项](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)。这些解决方案可以用于 Parquet 文件，但是利用集成 Parquet 加密机制的新功能可以在列级别实现精细访问控制，并提高性能和安全性。有关此功能的更多信息，请访问 Apache github 页面 [Parquet 模块化加密](https://github.com/apache/parquet-format/blob/master/Encryption.md)。

用户使用 Hadoop 配置将配置传递给 Parquet 读取器和写入器。有关用户配置读取器和写入器以启用加密以及切换高级功能的详细配置，详见 [PARQUET-1854：Parquet 加密管理的属性驱动接口](https://docs.google.com/document/d/1boH6HPkG0ZhgxcaRkGk3QpZ8X_J91uXZwVGwYN45St4/edit) 

## 用法示例
<a name="usage-examples"></a>

以下示例涉及使用 AWS KMS 创建加密密钥并写入 Hive 表以进行加密密钥管理。

1. 如文档 [PARQUET-1373：加密密钥管理工具](https://docs.google.com/document/d/1bEu903840yb95k9q2X-BlsYKuXoygE4VnMDl9xz_zhk/edit)中所述，为 AWS KMS 服务实现。 KmsClient 以下示例演示了一个实施片段。

   ```
   package org.apache.parquet.crypto.keytools;
   
   import com.amazonaws.AmazonClientException;
   import com.amazonaws.AmazonServiceException;
   import com.amazonaws.regions.Regions;
   import com.amazonaws.services.kms.AWSKMS;
   import com.amazonaws.services.kms.AWSKMSClientBuilder;
   import com.amazonaws.services.kms.model.DecryptRequest;
   import com.amazonaws.services.kms.model.EncryptRequest;
   import com.amazonaws.util.Base64;
   import org.apache.hadoop.conf.Configuration;
   import org.apache.parquet.crypto.KeyAccessDeniedException;
   import org.apache.parquet.crypto.ParquetCryptoRuntimeException;
   import org.apache.parquet.crypto.keytools.KmsClient;
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   
   import java.nio.ByteBuffer;
   import java.nio.charset.Charset;
   import java.nio.charset.StandardCharsets;
   
   public class AwsKmsClient implements KmsClient {
   
       private static final AWSKMS AWSKMS_CLIENT = AWSKMSClientBuilder
               .standard()
               .withRegion(Regions.US_WEST_2)
               .build();
       public static final Logger LOG = LoggerFactory.getLogger(AwsKmsClient.class);
   
       private String kmsToken;
       private Configuration hadoopConfiguration;
   
       @Override
       public void initialize(Configuration configuration, String kmsInstanceID, String kmsInstanceURL, String accessToken) throws KeyAccessDeniedException {
           hadoopConfiguration = configuration;
           kmsToken = accessToken;
   
       }
   
       @Override
       public String wrapKey(byte[] keyBytes, String masterKeyIdentifier) throws KeyAccessDeniedException {
           String value = null;
           try {
               ByteBuffer plaintext = ByteBuffer.wrap(keyBytes);
   
               EncryptRequest req = new EncryptRequest().withKeyId(masterKeyIdentifier).withPlaintext(plaintext);
               ByteBuffer ciphertext = AWSKMS_CLIENT.encrypt(req).getCiphertextBlob();
   
               byte[] base64EncodedValue = Base64.encode(ciphertext.array());
               value = new String(base64EncodedValue, Charset.forName("UTF-8"));
           } catch (AmazonClientException ae) {
               throw new KeyAccessDeniedException(ae.getMessage());
           }
           return value;
       }
   
       @Override
       public byte[] unwrapKey(String wrappedKey, String masterKeyIdentifier) throws KeyAccessDeniedException {
           byte[] arr = null;
           try {
               ByteBuffer ciphertext  = ByteBuffer.wrap(Base64.decode(wrappedKey.getBytes(StandardCharsets.UTF_8)));
               DecryptRequest request = new DecryptRequest().withKeyId(masterKeyIdentifier).withCiphertextBlob(ciphertext);
               ByteBuffer decipheredtext = AWSKMS_CLIENT.decrypt(request).getPlaintext();
               arr = new byte[decipheredtext.remaining()];
               decipheredtext.get(arr);
           } catch (AmazonClientException ae) {
               throw new KeyAccessDeniedException(ae.getMessage());
           }
           return arr;
       }
   }
   ```

1. 按照*AWS Key Management Service 开发人员指南*中的创建密钥中所述，为页脚以及您的 IAM 角色具有访问权限的列[创建 AWS KMS 加密密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。默认 IAM 角色为 EMR\$1ECS\$1default。

1. 按照 [Apache Hive 资源文档](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli#LanguageManualCli-HiveResources) 所述，在 Amazon EMR 集群上的 Hive 应用程序中，使用上述 `ADD JAR` 语句添加客户端。下面是一个示例语句：

   ```
   ADD JAR 's3://location-to-custom-jar';
   ```

   另一种方法是使用引导操作将 JAR 添加到 Hive 的 `auxlib` 中。以下是要添加到引导操作的示例行：

   ```
   aws s3 cp 's3://location-to-custom-jar' /usr/lib/hive/auxlib 
   ```

1. 设置下列配置值：

   ```
   set parquet.crypto.factory.class=org.apache.parquet.crypto.keytools.PropertiesDrivenCryptoFactory;
   set parquet.encryption.kms.client.class=org.apache.parquet.crypto.keytools.AwsKmsClient;
   ```

1. 创建一个 Parquet 格式的 Hive 表，在 SERDEPROPERTIES 中指定 AWS KMS 密钥并向其中插入一些数据：

   ```
   CREATE TABLE my_table(name STRING, credit_card STRING)
   ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe’
   WITH SERDEPROPERTIES (
     'parquet.encryption.column.key’=<aws-kms-key-id-for-column-1>: credit_card’,
     'parquet.encryption.footer.key’='<aws-kms-key-id-for-footer>’)
   STORED AS parquet
   LOCATION “s3://<bucket/<warehouse-location>/my_table”;
   
   INSERT INTO my_table SELECT 
   java_method ('org.apache.commons.lang.RandomStringUtils','randomAlphabetic',5) as name,
   java_method ('org.apache.commons.lang.RandomStringUtils','randomAlphabetic',10) as credit_card
   from (select 1) x lateral view posexplode(split(space(100),' ')) pe as i,x;
   
   select * from my_table;
   ```

1. 验证当您在同一位置创建无法访问 AWS KMS 密钥的外部表时（例如，IAM 角色访问被拒绝），您是否无法读取数据。

   ```
   CREATE EXTERNAL TABLE ext_table (name STRING, credit_card STRING)
   ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe’
   STORED AS parquet
   LOCATION “s3://<bucket>/<warehouse-location>/my_table”;
   
   SELECT * FROM ext_table;
   ```

1. 最后一条语句应触发以下异常：

   ```
   Failed with exception java.io.IOException:org.apache.parquet.crypto.KeyAccessDeniedException: Footer key: access denied
   ```

# 2 中的传输中 HiveServer加密
<a name="hs2-encryption-intransit"></a>

从 Amazon EMR 版本 6.9.0 开始，作为安全配置的一部分， HiveServer2 (HS2) 已启用 TLS/SSL。[2 中的传输中 HiveServer加密](#hs2-encryption-intransit)这会影响您连接到启用传输中加密的 Amazon EMR 集群上 HS2 运行的方式。要连接 HS2，必须修改 JDBC `TRUSTSTORE_PASSWORD` URL 中的`TRUSTSTORE_PATH`和参数值。以下 URL 是 HS2 带有所需参数的 JDBC 连接的示例：

```
jdbc:hive2://HOST_NAME:10000/default;ssl=true;sslTrustStore=TRUSTSTORE_PATH;trustStorePassword=TRUSTSTORE_PASSWORD
```

使用下面的相应说明进行集群内或集群外 HiveServer 2 加密。

------
#### [ On-cluster HS2 access ]

如果您在 SSH 连接到主节点后使用 Beeline 客户端访问 HiveServer 2，则参考`/etc/hadoop/conf/ssl-server.xml`使用配置`TRUSTSTORE_PATH``ssl.server.truststore.location`和查找和`TRUSTSTORE_PASSWORD`参数值。`ssl.server.truststore.password`

以下示例命令可帮助您检索这些配置：

```
TRUSTSTORE_PATH=$(sed -n '/ssl.server.truststore.location/,+2p' /etc/hadoop/conf/ssl-server.xml | awk -F "[><]" '/value/{print $3}')
TRUSTSTORE_PASSWORD=$(sed -n '/ssl.server.truststore.password/,+2p' /etc/hadoop/conf/ssl-server.xml | awk -F "[><]" '/value/{print $3}')
```

------
#### [ Off-cluster HS2 access ]

 如果您从 Amazon EMR 集群之外的客户端访问 HiveServer 2。您可以使用以下方法之一来获取和：`TRUSTSTORE_PATH``TRUSTSTORE_PASSWORD`
+ 将[安全配置](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html)期间创建的 PEM 文件转换为 JKS 文件，并在 JDBC 连接 URL 中使用该文件。例如，对于 openssl 和 keytool，请使用以下命令：

  ```
  openssl pkcs12 -export -in trustedCertificates.pem -inkey privateKey.pem -out trustedCertificates.p12 -name "certificate"
  keytool -importkeystore -srckeystore trustedCertificates.p12 -srcstoretype pkcs12 -destkeystore trustedCertificates.jks
  ```
+ 或者，参考 `/etc/hadoop/conf/ssl-server.xml` 以使用配置 `ssl.server.truststore.location` 和 `ssl.server.truststore.password` 来查找 `TRUSTSTORE_PATH` 和 `TRUSTSTORE_PASSWORD` 参数值。将信任存储库文件下载到客户端计算机，并使用客户端计算机上的路径作为 `TRUSTSTORE_PATH`。

  有关从 Amazon EMR 集群外部的客户端访问应用程序的更多信息，请参阅[使用 Hive JDBC 驱动程序](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/HiveJDBCDriver.html)。

------

# Hive 发行历史记录
<a name="Hive-release-history"></a>

下表列出了 Amazon EMR 每个发行版本中包含的 Hive 版本，以及随应用程序一起安装的组件。有关每个发行版本中的组件版本，请参阅 [Amazon EMR 7.x 发行版](emr-release-7x.md)、[Amazon EMR 6.x 发行版](emr-release-6x.md) 或 [Amazon EMR 5.x 发行版](emr-release-5x.md) 中的发行版“组件版本”部分。


**Hive 版本信息**  

| Amazon EMR 发行版标签 | Hive 版本 | 随 Hive 安装的组件 | 
| --- | --- | --- | 
| emr-7.12.0 | 3.1.3-amzn-21 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.11.0 | 3.1.3-amzn-20 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.10.0 | 3.1.3-amzn-19 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.9.0 | 3.1.3-amzn-18 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.8.0 | 3.1.3-amzn-17 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.7.0 | 3.1.3-amzn-16 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.6.0 | 3.1.3-amzn-15 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.5.0 | 3.1.3-amzn-14 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.4.0 | 3.1.3-amzn-13 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.3.0 | 3.1.3-amzn-12 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.2.0 | 3.1.3-amzn-11 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-5.36.2 | 2.3.9-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-7.1.0 | 3.1.3-amzn-10 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-7.0.0 | 3.1.3-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.15.0 | 3.1.3-amzn-8 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.14.0 | 3.1.3-amzn-7 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.13.0 | 3.1.3-amzn-6 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.12.0 | 3.1.3-amzn-5 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.11.1 | 3.1.3-amzn-4.1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.11.0 | 3.1.3-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.10.1 | 3.1.3-amzn-3.1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.10.0 | 3.1.3-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, tez-on-worker, zookeeper-client, zookeeper-server | 
| emr-6.9.1 | 3.1.3-amzn-2.1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.9.0 | 3.1.3-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.8.1 | 3.1.3-amzn-1.1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.8.0 | 3.1.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.7.0 | 3.1.3-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-5.36.1 | 2.3.9-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.36.0 | 2.3.9-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-6.6.0 | 3.1.2-amzn-7 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-5.35.0 | 2.3.9-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-6.5.0 | 3.1.2-amzn-6 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.4.0 | 3.1.2-amzn-5 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.3.1 | 3.1.2-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.3.0 | 3.1.2-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.2.1 | 3.1.2-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.2.0 | 3.1.2-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.1.1 | 3.1.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.1.0 | 3.1.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.0.1 | 3.1.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-6.0.0 | 3.1.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn, zookeeper-client, zookeeper-server | 
| emr-5.34.0 | 2.3.8-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.33.1 | 2.3.7-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.33.0 | 2.3.7-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.32.1 | 2.3.7-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.32.0 | 2.3.7-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.31.1 | 2.3.7-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.31.0 | 2.3.7-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.30.2 | 2.3.6-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.30.1 | 2.3.6-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.30.0 | 2.3.6-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mariadb-server, tez-on-yarn | 
| emr-5.29.0 | 2.3.6-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mysql-server, tez-on-yarn | 
| emr-5.28.1 | 2.3.6-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mysql-server, tez-on-yarn | 
| emr-5.28.0 | 2.3.6-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, hudi, mysql-server, tez-on-yarn | 
| emr-5.27.1 | 2.3.5-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.27.0 | 2.3.5-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.26.0 | 2.3.5-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.25.0 | 2.3.5-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.24.1 | 2.3.4-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.24.0 | 2.3.4-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.23.1 | 2.3.4-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.23.0 | 2.3.4-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.22.0 | 2.3.4-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.21.2 | 2.3.4-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.21.1 | 2.3.4-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.21.0 | 2.3.4-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.20.1 | 2.3.4-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.20.0 | 2.3.4-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.19.1 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.19.0 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.18.1 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.18.0 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.17.2 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.17.1 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.17.0 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, emr-s3-select, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.16.1 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.16.0 | 2.3.3-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.15.1 | 2.3.3-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.15.0 | 2.3.3-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.14.2 | 2.3.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.14.1 | 2.3.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.14.0 | 2.3.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.13.1 | 2.3.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.13.0 | 2.3.2-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.12.3 | 2.3.2-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.12.2 | 2.3.2-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.12.1 | 2.3.2-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.12.0 | 2.3.2-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.11.4 | 2.3.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.11.3 | 2.3.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.11.2 | 2.3.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.11.1 | 2.3.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.11.0 | 2.3.2-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.10.1 | 2.3.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.10.0 | 2.3.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.9.1 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.9.0 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.8.3 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.8.2 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.8.1 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.8.0 | 2.3.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.7.1 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.7.0 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.6.1 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.6.0 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.5.4 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.5.3 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.5.2 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.5.1 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.5.0 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.4.1 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.4.0 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hive-hbase, hcatalog-server, hive-server2, mysql-server, tez-on-yarn | 
| emr-5.3.2 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.3.1 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.3.0 | 2.1.1-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.2.3 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.2.2 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.2.1 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.2.0 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.1.1 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.1.0 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.0.3 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.0.2 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.0.1 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-5.0.0 | 2.1.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, hive-server, mysql-server, tez-on-yarn | 
| emr-4.9.6 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.9.5 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.9.4 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.9.3 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.9.2 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.9.1 | 1.0.0-amzn-9 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.5 | 1.0.0-amzn-8 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.4 | 1.0.0-amzn-8 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.3 | 1.0.0-amzn-8 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.2 | 1.0.0-amzn-7 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.1 | 1.0.0-amzn-7 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.8.0 | 1.0.0-amzn-7 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.7.4 | 1.0.0-amzn-6 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.7.3 | 1.0.0-amzn-6 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.7.2 | 1.0.0-amzn-6 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.7.1 | 1.0.0-amzn-5 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.7.0 | 1.0.0-amzn-5 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, hive-server, mysql-server | 
| emr-4.6.1 | 1.0.0-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.6.0 | 1.0.0-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.5.0 | 1.0.0-amzn-4 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.4.0 | 1.0.0-amzn-3 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.3.0 | 1.0.0-amzn-2 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.2.0 | 1.0.0-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.1.0 | 1.0.0-amzn-1 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 
| emr-4.0.0 | 1.0.0-amzn-0 | emrfs, emr-ddb, emr-goodies, emr-kinesis, emr-s3-dist-cp, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hive-metastore-server, hive-server, mysql-server | 

# Hive 发布说明（按版本分类）
<a name="Hive-release-history-versions"></a>

**Topics**
+ [Amazon EMR 7.10.0：Hive 发布说明](Hive-release-history-7100.md)
+ [Amazon EMR 7.9.0：Hive 发布说明](Hive-release-history-790.md)
+ [Amazon EMR 7.8.0：Hive 发布说明](Hive-release-history-780.md)
+ [Amazon EMR 7.7.0：Hive 发布说明](Hive-release-history-770.md)
+ [Amazon EMR 7.6.0：Hive 发布说明](Hive-release-history-760.md)
+ [亚马逊 EMR 7.5.0-Hive 发行说明](Hive-release-history-750.md)
+ [亚马逊 EMR 7.4.0-Hive 发行说明](Hive-release-history-740.md)
+ [亚马逊 EMR 7.3.0-Hive 发行说明](Hive-release-history-730.md)
+ [亚马逊 EMR 7.2.0-Hive 发行说明](Hive-release-history-720.md)
+ [Amazon EMR 7.1.0：Hive 发布说明](Hive-release-history-710.md)
+ [亚马逊 EMR 7.0.0-Hive 发行说明](Hive-release-history-700.md)
+ [Amazon EMR 6.15.0 - Hive 发布说明](Hive-release-history-6150.md)
+ [Amazon EMR 6.14.0：Hive 发布说明](Hive-release-history-6140.md)
+ [Amazon EMR 6.13.0：Hive 发布说明](Hive-release-history-6130.md)
+ [Amazon EMR 6.12.0：Hive 发布说明](Hive-release-history-6120.md)
+ [Amazon EMR 6.11.0：Hive 发布说明](Hive-release-history-6110.md)
+ [Amazon EMR 6.10.0：Hive 发布说明](Hive-release-history-6100.md)
+ [Amazon EMR 6.9.0：Hive 发布说明](Hive-release-history-690.md)
+ [Amazon EMR 6.8.0：Hive 发布说明](Hive-release-history-680.md)
+ [Amazon EMR 6.7.0：Hive 发布说明](Hive-release-history-670.md)
+ [Amazon EMR 6.6.0：Hive 发布说明](Hive-release-history-660.md)

# Amazon EMR 7.10.0：Hive 发布说明
<a name="Hive-release-history-7100"></a>

## Amazon EMR 7.10.0：Hive 更改
<a name="Hive-release-history-changes-7100"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 错误修复 | [TEZ-4595](https://issues.apache.org/jira/browse/TEZ-4595) 的 Hive 侧修复。 | 

**已知问题**
+ AWS EMR-7.10.0 的 EMR 现在使用 S3A 作为默认文件系统（取代 EMRFS），这意味着 Hive 操作将不再在 S3 中创建`_$folder$`标记对象，与 EMRFS 的 HDFS 相比，Hive 写入查询中使用的中间清单文件现在存储在 S3 中。有关使用 S3A 时的注意事项，请参阅[迁移指南](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-s3a-migrate.html)。
+ 从 EMR-7.3.0 到 EMR-7.10.0，Hive Iceberg 集成存在一个错误，当使用 Glue Data Catalog 作为元数据存储时，Hive 中的表 HBase 创建失败。 AWS 如果您遇到此问题，请联系 AWS 支持团队。

# Amazon EMR 7.9.0：Hive 发布说明
<a name="Hive-release-history-790"></a>

## Amazon EMR 7.9.0：Hive 更改
<a name="Hive-release-history-changes-790"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 错误修复 | 如果通过 CTAS 创建的表是 ACID，则不应使用 Hive Blobstore Committer。 | 
| 错误修复 | [HIVE-26096](https://issues.apache.org/jira/browse/HIVE-26096)：在单列 MultiDelimitSerDe 表格上选择会抛出 AIOBE (\$13158)。 | 
| 升级 | 通过逆向移植 [HIVE-26954](https://issues.apache.org/jira/browse/HIVE-26954)、[HIVE-27877](https://issues.apache.org/jira/browse/HIVE-27877) 和 [HIVE-28574](https://issues.apache.org/jira/browse/HIVE-28574)，将 Avro 版本升级到 1.11.4。 | 

**已知问题**
+ 对于以 Amazon S3 Express One Zone 为输出位置的 Hive 插入覆盖查询，请将 core-site 配置：`fs.s3a.directory.operations.purge.uploads` 设置为 `false`。
+ 从 EMR-7.3.0 到 EMR-7.10.0，Hive Iceberg 集成存在一个错误，当使用 Glue Data Catalog 作为元数据存储时，Hive 中的表 HBase 创建失败。 AWS 如果您遇到此问题，请联系 AWS 支持团队。

# Amazon EMR 7.8.0：Hive 发布说明
<a name="Hive-release-history-780"></a>

## Amazon EMR 7.8.0：Hive 更改
<a name="Hive-release-history-changes-780"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 错误修复 | 修复 CVE-2024-23953：Apache Hive：针对 LLAP 中签名的定时攻击。 | 

**已知问题**
+ 对于以 Amazon S3 Express One Zone 为输出位置的 Hive 插入覆盖查询，请将 core-site 配置：`fs.s3a.directory.operations.purge.uploads` 设置为 `false`。

# Amazon EMR 7.7.0：Hive 发布说明
<a name="Hive-release-history-770"></a>

## Amazon EMR 7.7.0：Hive 更改
<a name="Hive-release-history-changes-770"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 错误修复 | 修复 CVE-2024-29869：Apache Hive：使用非限制性权限创建的凭证文件。 | 
| 错误修复 | 修复了 SemanticException 在 Apache Ran 中启用行级筛选策略的情况。 | 
| 错误修复 | 启用 LLAP 或 ACID 时，禁用 Tez Async Init RR。 | 

**已知问题**
+ 对于以 Amazon S3 Express One Zone 为输出位置的 Hive 插入覆盖查询，请将 core-site 配置：`fs.s3a.directory.operations.purge.uploads` 设置为 `false`。

# Amazon EMR 7.6.0：Hive 发布说明
<a name="Hive-release-history-760"></a>

## Amazon EMR 7.6.0：Hive 更改
<a name="Hive-release-history-changes-760"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 改进 | 为 ORC 非 ACID 分区表添加了快速 S3 前缀列表功能 | 
| 功能 | 在 S3 系统上添加对 Hive 写入查询的 Magic Committers 的支持 AFile | 

**已知问题**
+ 对于以 Amazon S3 Express One Zone 为输出位置的 Hive 插入覆盖查询，请将 core-site 配置：`fs.s3a.directory.operations.purge.uploads` 设置为 `false`。

### Amazon EMR 7.6.0 - 新配置
<a name="Hive-release-history-changes-760-new-configs"></a>


****  

| 分类 | Name | 默认值 | 说明 | 
| --- | --- | --- | --- | 
| hive-site | `hive.exec.fast.s3.partition.discovery.enabled` | true | 是否使用快速 S3 分区发现进行拆分计算。这将为支持的文件格式启用基于前缀的列表：ORC。请注意，此功能使用 S3 Express One Zone 存储类别不支持的 S3 API 参数。使用它们时，请禁用此功能。 | 
| hive-site | `hive.exec.fast.s3.partition.discovery.max.thread.threshold` | 128 | 快速 S3 分区发现的最大并行度。 | 
| hive-site | `hive.exec.fast.s3.partition.discovery.parallelism` | 10 | 快速 S3 分区发现单次运行的并行度。此配置只有在 `hive.exec.fast.s3.partition.discovery.enabled` 设置为 `true` 时才会生效 | 
| hive-site | `hive.blobstore.output-committer.magic.track.commits.in.memory.enabled` | true | 用于切换 Magic 提交程序和 Hive 的标志是否应该跟踪内存中所有待处理提交？ Magic 提交者可以选择将提交数据存储在内存中，这样可以减少调用 S3 的次数，从而加快 TaskCommit 操作速度。此配置会覆盖 Hadoop 配置 `fs.s3a.committer.magic.track.commits.in.memory.enabled` | 
| hive-site | `hive.blobstore.output-committer.dp.skip.task.staging.dir.creation` | true | 用于切换 Magic 提交程序的标志是否应该在 blobstore 中创建 dp 暂存路径？ 此标志仅适用于 Hive 通过 `hive.blobstore.output-committer.magic.track.commits.in.memory.enabled` 使用 Magic Committer 跟踪内存中的提交的情况。默认情况下，它设置为 true，但仅当启用 `hive.blobstore.output-committer.magic.track.commits.in.memory.enabled` 时才会生效，并将创建任务尝试路径的额外 S3 调用保存到 blobstore 中。 | 
| hive-site | `hive.blobstore.output-committer.magic.disable.fs.cache.for.llap` | true | 使用 Magic Committer 时，应在 LLAP 的写入流中禁用用于切换 blobstore FS 缓存的标志。启用 LLAP 时，此标志就会生效，默认情况下设置为 true。 | 

# 亚马逊 EMR 7.5.0-Hive 发行说明
<a name="Hive-release-history-750"></a>

## 亚马逊 EMR 7.5.0-Hive 的变化
<a name="Hive-release-history-changes-750"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 改进 | 将尝试在 HiveCLI 中使用现有会话时等待 Tez 会话打开的最长时间增加到 10 秒。 | 
| 改进 | 使用 LIMIT 调整配置以提高简单选择查询的性能 | 

# 亚马逊 EMR 7.4.0-Hive 发行说明
<a name="Hive-release-history-740"></a>

## 亚马逊 EMR 7.4.0-Hive 的变化
<a name="Hive-release-history-changes-740"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 升级 | [HIVE-28191](https://issues.apache.org/jira/browse/HIVE-28191)：将 Hadoop 版本升级到 3.4.0 | 
| 升级 |  将 hadoop shaded protobuf 升级到 3.21 | 
| 升级 | 将 commons-cli 升级到 1.5.0 | 
| 升级 | 将 commons-compress 升级到 1.24.0 | 
| 升级 | 将 commons-io 升级到 2.14.0 | 
| 升级 | 将 commons-lang3 升级到 3.21.0 | 
| 改进 | 将尝试在 HiveCLI 中使用现有会话时等待 Tez 会话打开的最长时间更改为 10 秒。 | 
| 改进 | 使用 LIMIT 在 Tez DAG 中为简单的选择查询启用短路机制 | 
| 改进 | [HIVE-21100](https://issues.apache.org/jira/browse/HIVE-21100)：允许扁平化使用 TEZ 引擎和 UNION 子句时生成的表子目录 | 
| 错误修复 | [HIVE-25095](https://issues.apache.org/jira/browse/HIVE-25095)： Beeline/hive -e 命令无法处理带有尾部引号的查询 | 
| 错误修复 | [HIVE-13781](https://issues.apache.org/jira/browse/HIVE-13781)： FileNotFoundException 当分区目录不存在时 Tez Job 失败  | 
| 错误修复 | [HIVE-28480](https://issues.apache.org/jira/browse/HIVE-28480)：在之前的 RS 中，如果联接分支之间的分区哈希生成器不匹配，则禁用 SMB | 

### Amazon EMR 7.4.0 - 新配置
<a name="Hive-release-history-changes-740-new-configs"></a>


****  

| 分类 | Name | 默认值 | 说明 | 
| --- | --- | --- | --- | 
| hive-site | hive.ignore.failure.partition.dir.not.found | false | 如果表分区存在，但实际对象存储路径不存在，则忽略失败。 | 
| hive-site | hive.tez.union.flatten.subdirectories | false | 当向表中写入数据且 UNION ALL 是查询的最后一步时，Tez 上的 Hive 会为 UNION ALL 的每个分支创建一个子目录。启用此属性后，子目录将被移除，文件将被重命名并移动到父目录。请注意，当启用 hive.blobstore.use.output-committer 时，此操作无效。 | 

# 亚马逊 EMR 7.3.0-Hive 发行说明
<a name="Hive-release-history-730"></a>

## 亚马逊 EMR 7.3.0-Hive 的变化
<a name="Hive-release-history-changes-730"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 功能 | [HIVE-18728](https://issues.apache.org/jira/browse/HIVE-18728) — HCat 使用 SSL 保护网络安全。 | 
| 改进 | 支持为 LLAP 进程守护程序 Web UI 配置 SSL 密钥库凭证。 | 
| 改进 | 提供控制 Hive 元存储服务器的 SSL 主机名验证的选项。 | 
| 错误修复 | [HIVE-26541](https://issues.apache.org/jira/browse/HIVE-26541) — 启动 Web HCat 服务时不适用。 | 
| 错误修复 | [ HIVE-23011](https://issues.apache.org/jira/browse/HIVE-23011)：在比较联接时，共享工作优化程序应检查剩余谓词。 | 
| 错误修复 | 修复 **javax.security.sasl。 SaslException**：启用传输中加密后，HMS 和 Namenode 之间的客户端和服务器之间没有共同的保护层。 | 
| 错误修复 | **IOException**修复兽人分裂的结尾与方块位置的起点重叠的地方。 | 
| 错误修复 | 当列名包含逗号字符时，请使用列名分隔符，而不是总是按逗号分隔，然后使用。 CSVSerde | 

### Amazon EMR 7.3.0 - 新配置
<a name="Hive-release-history-changes-730-new-configs"></a>


****  

| 分类 | Name | 默认值 | 说明 | 
| --- | --- | --- | --- | 
| hcatalog-webhcat-site | templeton.use.ssl | false | 要对 Web HCat 服务器使用 SSL 加密，请将其设置为 true。 | 
| hcatalog-webhcat-site | templeton.keystore.path |  | Web HCat 服务器的 SSL 证书密钥库位置。 | 
| hcatalog-webhcat-site | templeton.keystore.password |  | Web HCat 服务器的 SSL 证书密钥库密码。 | 
| hcatalog-webhcat-site | templeton.ssl.protocol.blacklist | SSLv2, SSLv3 | 要为 Web HCat 服务器禁用的 SSL 版本。 | 
| hcatalog-webhcat-site | templeton.host | 0.0.0.0 | Web HCat 服务器将监听的主机地址。 | 
| hive-site | hive.metastore.ssl.enable.hostname.verification | false | 在 SSL/TLS 握手期间控制主机名验证。 | 
| hive-site | hive.llap.daemon.web.ssl.keystore.path |  | LLAP 进程守护程序 Web UI 的 SSL 证书密钥库位置。 | 
| hive-site | hive.llap.daemon.web.ssl.keystore.password |  | LLAP 进程守护程序 Web UI 的 SSL 证书密钥库密码。 | 
| hive-site | hive.metastore.hadoop.rpc.protection.override.to.authentication | false | 启用后，HMS 始终会覆盖其配置集中 hadoop.rpc.protection 值以进行身份验证。 | 

# 亚马逊 EMR 7.2.0-Hive 发行说明
<a name="Hive-release-history-720"></a>

## 亚马逊 EMR 7.2.0-Hive 的变化
<a name="Hive-release-history-changes-720"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 升级 | [ Parquet 1.13.1](https://github.com/apache/parquet-java/blob/apache-parquet-1.13.1/CHANGES.md)：Parquet 已升级到 113.1。 | 
| 改进 | [ HIVE-12930](https://issues.apache.org/jira/browse/HIVE-12930)：支持 LLAP 的 SSL 随机排序。 | 
| 改进 | [ HIVE-23062](https://issues.apache.org/jira/browse/HIVE-23062)：Hive 在 TLS 和 Yarn HA 模式下检查 Yarn RM URL 是否有自定义 Tez 队列。 | 
| 错误修复 | [HIVE-27952](https://issues.apache.org/jira/browse/HIVE-27952) — SslContextFactory 当 KeyStore 有多个证书时，Hive 无法创建。 | 
| 错误修复 | [HIVE-28085](https://issues.apache.org/jira/browse/HIVE-28085) — YarnQueueHelper 无法访问启用 HTTPS 的 YARN WebService。 | 
| 错误修复 | [HIVE-26436](https://issues.apache.org/jira/browse/HIVE-26436) — MR 上的 Hive NullPointerException 当尚未调用 initializeOp 并关闭调用时。如果运算符尚未初始化，请跳过 close。 | 

### Amazon EMR 7.2.0 - 新配置
<a name="Hive-release-history-changes-720-new-configs"></a>


****  

| 分类 | Name | 默认值 | 说明 | 
| --- | --- | --- | --- | 
| hive-site | hive.llap.shuffle.ssl.enabled | false | 与 *tez.runtime.shuffle.ssl.enable* 一起设置为 true 以启用 LLAP 的 SSL 随机排序。 | 

# Amazon EMR 7.1.0：Hive 发布说明
<a name="Hive-release-history-710"></a>

## Amazon EMR 7.1.0：Hive 更改
<a name="Hive-release-history-changes-6150"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 错误修复 | [HIVE-24381](https://issues.apache.org/jira/browse/HIVE-24381)-如果包含跳过， header/footer 则压缩文本输入将返回 0 行。 | 
| 错误修复 | [HIVE-24190](https://issues.apache.org/jira/browse/HIVE-24190) — LLAP：根据 TEZ-4233， ShuffleHandler 可能会返回 DISK\$1ERROR\$1EXCEPTION。 | 
| 错误修复 | [HIVE-23073](https://issues.apache.org/jira/browse/HIVE-23073)：Shade Netty。 | 
| 错误修复 | [HIVE-23073](https://issues.apache.org/jira/browse/HIVE-23073)：Shade Netty 并升级到 netty 4.1.48.Final。 | 
| 错误修复 | [HIVE-23148](https://issues.apache.org/jira/browse/HIVE-23148)：由于 netty 着色，Llap 外部客户端流中断。 | 
| 错误修复 | [HIVE-25180](https://issues.apache.org/jira/browse/HIVE-25180)：升级 Netty。 | 
| 错误修复 | [HIVE-24524](https://issues.apache.org/jira/browse/HIVE-24524) — LLAP ShuffleHandler：升级到 Netty4 并在可能的情况下从 Hive 中删除 Netty3 依赖关系。 | 
| 错误修复 | [HIVE-28000](https://issues.apache.org/jira/browse/HIVE-28000)：Hive QL：当类型强制发生时，"not in" 子句会给出不正确的结果。 | 
| 错误修复 | [HIVE-27993](https://issues.apache.org/jira/browse/HIVE-27993) — Netty4 ShuffleHandler 应该使用 1 个 boss 线程。 | 
| 升级 | 将 Netty 升级到 4.1.100.Final | 
| 升级 | 将 Jetty 升级到 9.4.53.v20231009 | 
| 升级 | 将 Zookeeper 升级到 3.9.1 | 

## Amazon EMR 7.1.0：Hive 更改
<a name="emr-Hive-710-issues"></a>
+ Amazon EMR 7.1 将 Hive 升级到 Netty 4.1.100.Final，以解决 Netty3 中的安全漏洞。由于 hive-druid-handler依赖于 netty3，因此 Hive 在 Amazon EMR 7.1 的 Hive 类路径中没有 `hive-druid-handler` JAR。一旦 Druid 处理程序支持 Netty 的 4.1.100.Final 或更高版本，即将发布的 Amazon EMR 版本就会将其包含在 Hive 的类路径中。如果您需要 Amazon EMR 7.1 或更高版本中的 `hive-druid-handler` JAR，请联系 AWS 支持人员。

# 亚马逊 EMR 7.0.0-Hive 发行说明
<a name="Hive-release-history-700"></a>

## 亚马逊 EMR 7.0.0-Hive 变更
<a name="Hive-release-history-changes-700"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 升级 | Hive Runtime 现在默认使用 Java 17。有关更多详细信息，请参阅《[EMR 7.0.0 版本指南](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-700-release.html)》。 | 
| 逆向移植 | [HIVE-17709](https://issues.apache.org/jira/browse/HIVE-17709)：移除 sun.misc.Cleaner 引用 | 
| 错误修复 | 启用 LLAP 或 ACID 时，禁用 Tez Async Init RR  | 

# Amazon EMR 6.15.0 - Hive 发布说明
<a name="Hive-release-history-6150"></a>

## Amazon EMR 6.15.0 - Hive 更改
<a name="Hive-release-history-changes-6150"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 功能 | 支持 [TEZ-4397](https://issues.apache.org/jira/browse/TEZ-4397)：对于 Tez 异步拆分打开，Hive 现在支持 [Tez 异步拆分打开](tez-configure.md#tez-configure-async) 中描述的 Tez 配置。 | 
| 错误修复 | [HIVE-25400](https://issues.apache.org/jira/browse/HIVE-25400)：将 `BytesColumnVector` 中的偏移量更新移动到 `setValPreallocated`。 | 
| 错误修复 | [HIVE-25190](https://issues.apache.org/jira/browse/HIVE-25190)：修复 `BytesColumnVector` 中的许多小型分配。 | 
| 错误修复 | 用 llap 服务器打包 netty 模块，以避免在工作节点上启动 *LLapDaemon* 时出现*NoClassDefFound*异常。 | 
| 升级 | 将 Apache Hadoop 升级到 3.3.6。 | 
| 升级 | [HIVE-26684](https://issues.apache.org/jira/browse/HIVE-26684)：将 `maven-shade-plugin` 升级到 3.4.1。 | 
| 改进 | 要缩短 Amazon EMR 集群的启动时间，请从 HCatalog 启动脚本中移除 15 秒的睡眠时间。 | 

# Amazon EMR 6.14.0：Hive 发布说明
<a name="Hive-release-history-6140"></a>

## Amazon EMR 6.14.0：Hive 更改
<a name="Hive-release-history-changes-6140"></a>


****  

| Type | 说明 | 
| --- | --- | 
|  改进  |  [HIVE-26762](https://issues.apache.org/jira/browse/HIVE-26762)：移除 `HiveFilterSetOpTransposeRule` 中的操作数修剪 | 
|  错误修复  |  [HIVE-27582](https://issues.apache.org/jira/browse/HIVE-27582)：不要在中缓存 HBase 表输入格式 FetchOperator | 
|  错误修复  |  [HIVE-26452](https://issues.apache.org/jira/browse/HIVE-26452)：将 JOIN 转换到被多次引用的 MAPJOIN 和 JOIN 列时 NPE | 
|  错误修复  |  [HIVE-26416](https://issues.apache.org/jira/browse/HIVE-26416)：`AcidUtils.isRawFormatFile()` 对 non-ORC 文件发出 `InvalidProtocolBufferException` 异常  | 
|  错误修复  |  [HIVE-26105](https://issues.apache.org/jira/browse/HIVE-26105)：如果**注释**列包含特定的中文字符，则**显示列**会显示额外的值  | 
|  错误修复  |  [HIVE-25864](https://issues.apache.org/jira/browse/HIVE-25864)：Hive 查询优化功能创建错误的计划，以使用窗口函数进行谓词下推  | 
|  错误修复  |  [HIVE-25224](https://issues.apache.org/jira/browse/HIVE-25224)：涉及具有不同 `bucketing_versions` 的表的多个 INSERT 语句导致错误 | 
|  错误修复  |  [HIVE-24151](https://issues.apache.org/jira/browse/HIVE-24151)：如果字符串包含 non-ASCII 字符，则 `MultiDelimitSerDe` 会移动数据 | 
|  错误修复  |  [HIVE-23606](https://issues.apache.org/jira/browse/HIVE-23606)：（LLAP）`EncodedReaderImpl` 的 `DirectByteBuffer` 清理延迟 | 
|  错误修复  |  [HIVE-22165](https://issues.apache.org/jira/browse/HIVE-22165)：[HIVE-14296](https://issues.apache.org/jira/browse/HIVE-14296) 在 `SessionManager.closeSession` 上引入的同步会导致繁忙的 Hive 服务器出现高延迟  | 
|  错误修复  |  [HIVE-21304](https://issues.apache.org/jira/browse/HIVE-21304)：提高存储桶版本使用的稳健性 | 

# Amazon EMR 6.13.0：Hive 发布说明
<a name="Hive-release-history-6130"></a>

## Amazon EMR 6.13.0：Hive 更改
<a name="Hive-release-history-changes-6130"></a>


****  

| Type | 说明 | 
| --- | --- | 
|  改进  |  升级 Python 脚本以支持 Python3  | 
|  改进  |  [HIVE-27097](https://issues.apache.org/jira/browse/HIVE-27097)：改进 MetaStore 客户端和服务器的重试策略  | 
|  错误修复  |  [HIVE-21778](https://issues.apache.org/jira/browse/HIVE-21778)：CBO：“结构不为空”被评估为可为空，总是会导致查询中筛选条件缺失  | 
|  错误修复  |  [HIVE-21009](https://issues.apache.org/jira/browse/HIVE-21009)：为用户添加了设置绑定用户的功能  | 
|  错误修复  |  [HIVE-22661](https://issues.apache.org/jira/browse/HIVE-22661)：在路径中加载了数据的非存储桶表上的压缩失败  | 
|  错误修复  |  [HIVE-19718](https://issues.apache.org/jira/browse/HIVE-19718)：批量添加分区还会提取每个分区的表  | 
|  错误修复  |  [HIVE-22173](https://issues.apache.org/jira/browse/HIVE-22173)：在编译过程中使用多个横向视图的查询挂起  | 
|  错误修复  |  [HIVE-27088](https://issues.apache.org/jira/browse/HIVE-27088)：合并带有后联接筛选条件的内部和外部联接时结果不正确  | 
|  错误修复  |  [HIVE-21935](https://issues.apache.org/jira/browse/HIVE-21935)：Hive 向量化：使用向量化 UDF 导致性能降低  | 
|  错误修复  |  [HIVE-25299](https://issues.apache.org/jira/browse/HIVE-25299)：对于非 UTC 时区，将时间戳转换为数字数据类型是不正确的  | 
|  错误修复  |  [HIVE-24626](https://issues.apache.org/jira/browse/HIVE-24626)：LLAP：如果所有 IO 电梯线程都忙于排队到其他队列已满的读取器，则读取器线程可能会面临短缺  | 
|  错误修复  |  [HIVE-27029](https://issues.apache.org/jira/browse/HIVE-27029)：Hive 查询失败并显示文件系统关闭错误，HIVE-26352 已完成返工  | 
|  错误修复  |  [HIVE-26352](https://issues.apache.org/jira/browse/HIVE-26352)：Tez 队列访问检查失败，并且 Compaction 上存在 GSS 异常  | 
|  错误修复  |  [HIVE-24590](https://issues.apache.org/jira/browse/HIVE-24590)：操作日志仍然会泄漏 log4j 附加程序  | 
|  错误修复  |  [HIVE-24552](https://issues.apache.org/jira/browse/HIVE-24552)：可能的 HMS 连接泄漏或积聚在里面 loadDynamicPartitions  | 
|  错误修复  |  [HIVE-27069](https://issues.apache.org/jira/browse/HIVE-27069)：加入存储桶地图时结果不正确  | 
|  错误修复  |  [HIVE-27344](https://issues.apache.org/jira/browse/HIVE-27344)：在 RecordReaderImpl \$1close 中添加空值检查  | 
|  错误修复  |  [HIVE-27439](https://issues.apache.org/jira/browse/HIVE-27439)：支持以十进制表示的空格  | 
|  错误修复  |  [HIVE-27267](https://issues.apache.org/jira/browse/HIVE-27267)：使用子查询对十进制分桶列进行存储桶映射联接时结果不正确  | 
|  错误修复  |  [HIVE-21986](https://issues.apache.org/jira/browse/HIVE-21986)： HiveServer Web 用户界面：设置默认响应标头 Strict-Transport-Security  | 
|  错误修复  |  [HIVE-22148](https://issues.apache.org/jira/browse/HIVE-22148)：S3A 委托令牌未添加到 Compactor 的任务配置中。  | 
|  错误修复  |  [HIVE-22622](https://issues.apache.org/jira/browse/HIVE-22622)：Hive 允许创建具有重复属性名称的结构  | 
|  错误修复  |  [HIVE-22008](https://issues.apache.org/jira/browse/HIVE-22008)：LIKE 运算符应匹配多行输入  | 
|  错误修复  |  [HIVE-23144](https://issues.apache.org/jira/browse/HIVE-23144)：LLAP：让我们在 ServiceStop QueryTracker 上进行清理  | 
|  错误修复  |  [HIVE-22391](https://issues.apache.org/jira/browse/HIVE-22391)：检查 Hive 查询结果缓存时出现 NPE  | 
|  错误修复  |  [HIVE-23305](https://issues.apache.org/jira/browse/HIVE-23305)：由于竞争 NullPointerException 条件，在 LlapTaskSchedulerService addNode 中  | 
|  错误修复  |  [HIVE-22178：P](https://issues.apache.org/jira/browse/HIVE-22178) arquet FilterPredicate 会被扔掉 CastException SchemaEvolution  | 
|  错误修复  |  [HIVE-21517](https://issues.apache.org/jira/browse/HIVE-21517)：修复 AggregateStatsCache  | 
|  错误修复  |  [HIVE-21825](https://issues.apache.org/jira/browse/HIVE-21825)：改进启用 Active/Passive HA 时的客户端错误消息  | 
|  错误修复  |  [HIVE-23389](https://issues.apache.org/jira/browse/HIVE-23389)： FilterMergeRule 可能导致 AssertionError  | 
|  错误修复  |  [HIVE-22767](https://issues.apache.org/jira/browse/HIVE-22767)：Beeline 无法正确解析注释中的分号  | 
|  错误修复  |  [HIVE-22996](https://issues.apache.org/jira/browse/HIVE-22996)： BasicStats 解析时应主动检查空字符串或空字符串  | 
|  错误修复  |  [HIVE-22808](https://issues.apache.org/jira/browse/HIVE-22808)： HiveRelFieldTrimmer 无法处理 HiveTableFunctionScan  | 
|  错误修复  |  [HIVE-22437](https://issues.apache.org/jira/browse/HIVE-22437)：LLAP 元数据在锁定元数据时缓存 NPE。  | 
|  错误修复  |  [HIVE-22606：在](https://issues.apache.org/jira/browse/HIVE-22606) INFO 级别下 AvroSerde 记录 avro.schema.literal  | 
|  错误修复  |  [HIVE-22713](https://issues.apache.org/jira/browse/HIVE-22713)：不应对 Join-Fil(\$1)-RS 结构进行持续传播  | 
|  错误修复  |  [HIVE-21624](https://issues.apache.org/jira/browse/HIVE-21624)：LLAP：线程级别的 Cpu 指标已损坏  | 
|  错误修复  |  [HIVE-22815](https://issues.apache.org/jira/browse/HIVE-22815)：减少中不必要的文件系统对象创建 MROutput  | 
|  错误修复  |  [HIVE-23060](https://issues.apache.org/jira/browse/HIVE-23060)：查询失败并显示错误“分组集表达式不在 GROUP BY 键中。在令牌附近遇到错误”  | 
|  错误修复  |  [HIVE-22236](https://issues.apache.org/jira/browse/HIVE-22236)：无法通过选择包含 `NOT IN` 子查询的视图来创建视图  | 
|  错误修复  |  [HIVE-19886](https://issues.apache.org/jira/browse/HIVE-19886)：如果使用 —hiveconf hive.log.file，则日志可能会被定向到 2 个文件  | 
|  错误修复  |  [HIVE-20620](https://issues.apache.org/jira/browse/HIVE-20620)：使用动态分区插入存储桶排序的 MM 表时出现清单冲突  | 
|  错误修复  |  [HIVE-14557](https://issues.apache.org/jira/browse/HIVE-14557)：同时 SkewJoin启用 MapJoin 时为空指针  | 
|  错误修复  |  [HIVE-20471](https://issues.apache.org/jira/browse/HIVE-20471)：获取默认数据库路径时出现问题  | 
|  错误修复  |  [HIVE-20598](https://issues.apache.org/jira/browse/HIVE-20598)：修复计算中的 HiveAlgorithmsUtil错别字  | 
|  错误修复  |  [HIVE-14737](https://issues.apache.org/jira/browse/HIVE-14737)：在 Kerberized Hive Server 2 Web 用户界面中访问 /logs 时出现问题  | 
|  错误修复  |  [HIVE-20733](https://issues.apache.org/jira/browse/HIVE-20733)：通用 UDFOPEqual NS 不得在计划描述中使用 =  | 
|  错误修复  |  [HIVE-20848](https://issues.apache.org/jira/browse/HIVE-20848)：设置后 UpdateInputAccessTimeHook 查询失败并显示未找到表。  | 
|  错误修复  |  [HIVE-18929](https://issues.apache.org/jira/browse/HIVE-18929)： HiveStringUtils.java humanReadableInt 中的方法存在争用条件。  | 
|  错误修复  |  [HIVE-20841](https://issues.apache.org/jira/browse/HIVE-20841)：LLAP：将动态端口设置为可配置  | 
|  错误修复  |  [HIVE-20930](https://issues.apache.org/jira/browse/HIVE-20930)： VectorCoalesce 在 “筛选” 模式下不生效  | 
|  错误修复  |  [HIVE-21007](https://issues.apache.org/jira/browse/HIVE-21007)：半联接 \$1 Union 可能会导致计划错误  | 
|  错误修复  |  [HIVE-21074](https://issues.apache.org/jira/browse/HIVE-21074)：Hive 分桶表查询修剪不适用于 IS NOT NULL 条件  | 
|  错误修复  |  [HIVE-21223](https://issues.apache.org/jira/browse/HIVE-21223)：分区不存在时 CachedStore 返回空分区  | 
|  错误修复  |  [HIVE-19625](https://issues.apache.org/jira/browse/HIVE-19625)：Hive\$1copyFiles 中潜在的 NPE 和隐藏的实际异常  | 
|  错误修复  |  [HIVE-17020](https://issues.apache.org/jira/browse/HIVE-17020)：激进的 RS 重复数据删除可能会错误地删除 OP 树分支  | 
|  错误修复  |  [HIVE-20168](https://issues.apache.org/jira/browse/HIVE-20168)：隐藏 ReduceSinkOperator 日志记录  | 
|  错误修复  |  [HIVE-20879](https://issues.apache.org/jira/browse/HIVE-20879)：在投影表达式中使用空值会导致 CastException  | 
|  错误修复  |  [HIVE-20888](https://issues.apache.org/jira/browse/HIVE-20888): TxnHandler: 在不可变列表上调用 sort ()  | 
|  错误修复  |  [HIVE-19948](https://issues.apache.org/jira/browse/HIVE-19948)： HiveCli 如果字符串内有引号，则无法正确用分号分隔命令  | 
|  错误修复  |  [HIVE-20621](https://issues.apache.org/jira/browse/HIVE-20621)：在 resultset.next 中 GetOperationStatus 调用会导致增量缓慢  | 
|  错误修复  |  [HIVE-20854](https://issues.apache.org/jira/browse/HIVE-20854)：合理的默认值：Hive 的 Zookeeper 检测信号间隔为 20 分钟，改为 2 分钟  | 
|  错误修复  |  [HIVE-20330](https://issues.apache.org/jira/browse/HIVE-20330)：对于具有多个输入的作业， HCatLoader 无法处理多个 InputJobInfo 对象  | 
|  错误修复  |  [HIVE-20787](https://issues.apache.org/jira/browse/HIVE-20787)： MapJoinBytesTableContainerdummyRow 手机壳无法处理重复使用  | 
|  错误修复  |  [HIVE-20331](https://issues.apache.org/jira/browse/HIVE-20331)：使用 union all、横向视图和 Join 进行查询失败，并显示“无法在子运算符中找到父项”  | 
|  错误修复  |  [HIVE-19968](https://issues.apache.org/jira/browse/HIVE-19968)：未引发 UDF 异常  | 
|  错误修复  |  [HIVE-20410](https://issues.apache.org/jira/browse/HIVE-20410)：中止在事务表上插入覆盖会导致“没有足够的历史记录可用于……”错误  | 
|  错误修复  |  [HIVE-20059](https://issues.apache.org/jira/browse/HIVE-20059)：Hive 流式传输应在例外情况下无条件尝试阴影前缀  | 
|  错误修复  |  [HIVE-19424](https://issues.apache.org/jira/browse/HIVE-19424)：NPE In MetaDataFormatters  | 
|  错误修复  |  [HIVE-20355](https://issues.apache.org/jira/browse/HIVE-20355)： HiveConnection.setSchema 的清理参数  | 
|  错误修复  |  [HIVE-20858](https://issues.apache.org/jira/browse/HIVE-20858)：未使用实用程序中的配置正确初始化串行器。 createEmptyBuckets  | 
|  错误修复  |  [HIVE-20424](https://issues.apache.org/jira/browse/HIVE-20424)：schematool 不得污染 beeline 历史记录  | 
|  错误修复  |  [HIVE-20338](https://issues.apache.org/jira/browse/HIVE-20338)：LLAP：对具有 HDFS 协议隐含和 POSIX 突变语义的文件系统强制使用合成文件 ID  | 
|  错误修复  |  [HIVE-11708](https://issues.apache.org/jira/browse/HIVE-11708)：逻辑运算符 ClassCastExceptions 以空值升高  | 
|  错误修复  |  [HIVE-21082](https://issues.apache.org/jira/browse/HIVE-21082)：在 HPL/SQL 中，声明语句不支持字符类型的变量  | 
|  错误修复  |  [HIVE-16690](https://issues.apache.org/jira/browse/HIVE-16690)：根据 LLAP 集群大小配置 Tez 笛卡尔乘积边缘  | 
|  错误修复  |  [HIVE-14516](https://issues.apache.org/jira/browse/HIVE-14516)： OrcInputFormat。 SplitGenerator.callIntern  | 
|  错误修复  |  [HIVE-20981](https://issues.apache.org/jira/browse/HIVE-20981)：直播/泄漏 AbstractRecordWriter HeapMemoryMonitor  | 
|  错误修复  |  [HIVE-20043](https://issues.apache.org/jira/browse/HIVE-20043)： HiveServer2：周围 SessionState 有一个静态同步块 AtomicBoolean  | 
|  错误修复  |  [HIVE-20191](https://issues.apache.org/jira/browse/HIVE-20191)：如果 PreCommit 补丁为空，补丁应用程序不会失败  | 
|  错误修复  |  [HIVE-20400](https://issues.apache.org/jira/browse/HIVE-20400)：创建表应始终使用完全限定路径，以避免潜在的 FS 歧义  | 
|  错误修复  |  在访问偏斜列之前，添加对 skewedInfo 的空值检查  | 

# Amazon EMR 6.12.0：Hive 发布说明
<a name="Hive-release-history-6120"></a>

## Amazon EMR 6.12.0：Hive 更改
<a name="Hive-release-history-changes-6120"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 改进 | 添加了对 JDK 11 和 JDK 17 运行时系统的支持 | 
| 改进 | 添加了使用 S3 Select 时对查询区分大小写和保留关键字列名的支持。要使用它，请以“s3select.column.mapping”= "column1:fieldName1, column2:fieldName2,..." 的格式定义表格属性 | 
| 改进 | [HIVE-23133](https://issues.apache.org/jira/browse/HIVE-23133)：不同硬件架构的数值运算可能有不同的结果 | 
| 改进 | [HIVE-27145](https://issues.apache.org/jira/browse/HIVE-27145)： StrictMath 用于剩余的数学函数，作为 HIVE-23133 的后续函数 | 
| 错误修复 | [修复在 EMR Hive 6.4.0 中移植 HIVE-22900 而导致的 get\$1partitions\$1by\$1filter 和 get\$1num\$1partitions\$1by\$1filter HMS 中的通配符不兼容问题 APIs ](https://issues.apache.org/jira/browse/HIVE-22900) | 
| 错误修复 | [HIVE-26736](https://issues.apache.org/jira/browse/HIVE-26736)：带有 WITH 子句的嵌套视图授权失败 | 
| 错误修复 | [HIVE-22416](https://issues.apache.org/jira/browse/HIVE-22416)：启用并行执行后，与 MR 相关的操作日志丢失 | 
| 错误修复 | [HIVE-19653](https://issues.apache.org/jira/browse/HIVE-19653)：带有分组集的 groupby 的谓词下推不正确 | 
| 错误修复 | [HIVE-22094](https://issues.apache.org/jira/browse/HIVE-22094)：查询失败并显示为：hive.ql.e ClassCastException xec.vector。 DecimalColumnVector无法转换到 Hive.ql.exec.vector.decimal64 ColumnVector | 
| 错误修复 | [HIVE-26340](https://issues.apache.org/jira/browse/HIVE-26340)：如果查询具有大写窗口功能，则向量化 PTF 运算符会失败 | 
| 错误修复 | [HIVE-26184](https://issues.apache.org/jira/browse/HIVE-26184)：当某些键高度偏斜时，使用 GROUP BY 的 COLLECT\$1SET 速度非常慢 | 
| 错误修复 | [HIVE-26373](https://issues.apache.org/jira/browse/HIVE-26373)：从带有 Avro 数据的 HBase 表中读取时间戳 ClassCastException 时 | 
| 错误修复 | [HIVE-26388](https://issues.apache.org/jira/browse/HIVE-26388)： ClassCastException 当 CTAS 查询的源表中存在非字符串类型列时，升级 [HIVE-26172](https://issues.apache.org/jira/browse/HIVE-26172)：Hive-由于 CVE-2021-36373 和 CVE-2021-36374，将 Ant 升级到 1.10.11 | 
| 错误修复 | [HIVE-26114](https://issues.apache.org/jira/browse/HIVE-26114)：使用带前缀空格的 dfs 命令修复 jdbc 连接 hiveserver2 会导致异常 | 
| 错误修复 | [HIVE-26396](https://issues.apache.org/jira/browse/HIVE-26396)：trunc 函数在精度截取方面存在问题，且结果中有很多 0 | 
| 错误修复 | [HIVE-26446](https://issues.apache.org/jira/browse/HIVE-26446)： HiveProtoLoggingHook 无法填充分区表的 TablesWritten 字段。 | 
| 错误修复 | [HIVE-26639](https://issues.apache.org/jira/browse/HIVE-26639)： ConstantVectorExpression 并且 ExplainTask 不应该依赖默认字符集 | 
| 错误修复 | [HIVE-22670](https://issues.apache.org/jira/browse/HIVE-22670)： ArrayIndexOutOfBoundsException 当使用矢量化阅读器读取镶木地板文件时 | 
| 错误修复 | [HIVE-23607](https://issues.apache.org/jira/browse/HIVE-23607)：权限问题：在另一个视图上创建视图成功，但更改视图失败 | 
| 错误修复 | [HIVE-25498](https://issues.apache.org/jira/browse/HIVE-25498)：包含超过 31 个计数的不同函数的查询返回错误结果 | 
| 错误修复 | [HIVE-25780](https://issues.apache.org/jira/browse/HIVE-25780)： DistinctExpansion 创建超过 64 个分组集 II | 
| 错误修复 | [HIVE-23868](https://issues.apache.org/jira/browse/HIVE-23868)：窗口化函数规范：支持 0 在之前/之后 | 
| 错误修复 | [HIVE-24539](https://issues.apache.org/jira/browse/HIVE-24539)： OrcInputFormat 架构生成应遵循列分隔符 | 
| 错误修复 | [HIVE-23476](https://issues.apache.org/jira/browse/HIVE-23476)：LLAP：也要为 mmap case 预先分配竞技场 | 
| 错误修复 | [HIVE-25806](https://issues.apache.org/jira/browse/HIVE-25806)：可能漏进去 LlapCacheAwareFs ——Parquet，LLAP IO | 
| 错误修复 | [HIVE-23498](https://issues.apache.org/jira/browse/HIVE-23498)：在开启时禁用 HTTP 跟踪方法 ThriftHttpCliService | 
| 错误修复 | [HIVE-25729](https://issues.apache.org/jira/browse/HIVE-25729)： ThriftUnionObjectInspector 应在完全启动后收到通知 | 
| 错误修复 | [HIVE-23846](https://issues.apache.org/jira/browse/HIVE-23846)：避免对位向量进行不必要的序列化和反序列化 | 
| 错误修复 | [HIVE-24233](https://issues.apache.org/jira/browse/HIVE-24233)：except 子查询在禁用 cbo 的情况下引发空指针 | 
| 错误修复 | [HIVE-24276](https://issues.apache.org/jira/browse/HIVE-24276)： HiveServer2 loggerconf jsp 跨站点脚本 (XSS) 漏洞 | 
| 错误修复 | [HIVE-25721](https://issues.apache.org/jira/browse/HIVE-25721)：外部联接结果错误 | 
| 错误修复 | [HIVE-25223](https://issues.apache.org/jira/browse/HIVE-25223)：带限制的选择不会在非本地表上返回任何行 | 
| 错误修复 | [HIVE-25794](https://issues.apache.org/jira/browse/HIVE-25794): CombineHiveRecordReader: 循环中的日志语句会导致内存压力 | 
| 错误修复 | [HIVE-23602](https://issues.apache.org/jira/browse/HIVE-23602)：使用 Java Concurrent Package 作为操作句柄集 | 
| 错误修复 | [HIVE-24045](https://issues.apache.org/jira/browse/HIVE-24045)：没有与创建默认数据库的时间相关的日志 | 
| 错误修复 | [HIVE-24305](https://issues.apache.org/jira/browse/HIVE-24305)： scale/precision 如果将值括在引号中，则无法正确填充 avro 十进制架构 | 
| 错误修复 | [HIVE-25040](https://issues.apache.org/jira/browse/HIVE-25040)：删除数据库级联无法删除永久函数 | 
| 错误修复 | [HIVE-23501](https://issues.apache.org/jira/browse/HIVE-23501)： VectorDeserializeRow 当复杂类型转换为原始类型时 AOOB | 
| 错误修复 | [HIVE-23704](https://issues.apache.org/jira/browse/HIVE-23704)：Thrift HTTP 服务器无法正确处理身份验证处理 | 
| 错误修复 | [HIVE-23529](https://issues.apache.org/jira/browse/HIVE-23529)：使用 row\$1deserialize 时 uniontype 的 CTAS 被破坏 | 
| 错误修复 | [HIVE-24144](https://issues.apache.org/jira/browse/HIVE-24144)：中的 getIdentifierQuote字符串 HiveDatabaseMetaData 返回的值不正确 | 
| 错误修复 | [HIVE-23850](https://issues.apache.org/jira/browse/HIVE-23850)：当主题不是包含分组集的列时，允许 PPD | 
| 错误修复 | [HIVE-25919](https://issues.apache.org/jira/browse/HIVE-25919)：将布尔列谓词推入 ClassCastException 时 HBase StorageHandler | 
| 错误修复 | [HIVE-25261](https://issues.apache.org/jira/browse/HIVE-25261)：重试时HMSHandler 应使用目标 MetaException 的简短描述来包裹 | 
| 错误修复 | [HIVE-24792](https://issues.apache.org/jira/browse/HIVE-24792)：操作中可能出现线程泄漏 | 
| 错误修复 | [HIVE-23409](https://issues.apache.org/jira/browse/HIVE-23409)：如果由于时间轴服务关闭而导致 TezSession 应用程序重新打开失败， SessionPool 则在重试后将关闭默认为 f TezSession rom | 
| 错误修复 | [HIVE-23615](https://issues.apache.org/jira/browse/HIVE-23615)：不要在 Beeline Commands 类中使用空指针 | 
| 错误修复 | [HIVE-24849](https://issues.apache.org/jira/browse/HIVE-24849)：当位置有大量文件时创建外部表套接字超时（影响 3.1.2） | 
| 错误修复 | [HIVE-25209](https://issues.apache.org/jira/browse/HIVE-25209)：使用 SUM 函数的 SELECT 查询生成意外结果 | 
| 错误修复 | [HIVE-23666](https://issues.apache.org/jira/browse/HIVE-23666)：当 groupby 运算符没有设置分组时，会跳过 checkHashMode效率 | 
| 错误修复 | [HIVE-23873](https://issues.apache.org/jira/browse/HIVE-23873)：当 CBO 关闭时 NPE 查询 Hive H JDBCStorage andler 表失败 | 
| 错误修复 | [HIVE-24149](https://issues.apache.org/jira/browse/HIVE-24149)： HiveStreamingConnection 无法关闭 HMS 连接 | 
| 错误修复 | [HIVE-25561](https://issues.apache.org/jira/browse/HIVE-25561)：被终止的任务不应提交文件。（影响 2.x 和 3.x 版本） | 
| 错误修复 | [HIVE-25683](https://issues.apache.org/jira/browse/HIVE-25683)：关闭读取器进去 AcidUtils。 isRawFormat文件 | 
| 错误修复 | [HIVE-24294](https://issues.apache.org/jira/browse/HIVE-24294)： TezSessionPool 会话可能会引发 AssertionError | 
| 错误修复 | [HIVE-24182](https://issues.apache.org/jira/browse/HIVE-24182)：永久游骑兵授权问题 UDFs | 
| 错误修复 | [HIVE-22805](https://issues.apache.org/jira/browse/HIVE-22805)：使用条件数组或映射的向量化未实现并引发错误 | 
| 错误修复 | [HIVE-22828](https://issues.apache.org/jira/browse/HIVE-22828)：Decimal64：NVL 和 CASE 语句隐式地将 decimal64 转换为 128 | 
| 错误修复 | [HIVE-21398](https://issues.apache.org/jira/browse/HIVE-21398)：不应将包含估计统计数据的列视为唯一键 | 
| 错误修复 | [HIVE-22490](https://issues.apache.org/jira/browse/HIVE-22490)：添加路径中包含特殊字符的 jar 引发错误 | 
| 错误修复 | [HIVE-22700](https://issues.apache.org/jira/browse/HIVE-22700)：未经授权的压缩可能会泄漏内存 | 
| 错误修复 | [HIVE-22053](https://issues.apache.org/jira/browse/HIVE-22053)：创建函数时函数名称未标准化 | 
| 错误修复 | [HIVE-22595](https://issues.apache.org/jira/browse/HIVE-22595)：在带有外部架构的 Avro 表上进行动态分区插入失败 | 
| 错误修复 | [HIVE-21795](https://issues.apache.org/jira/browse/HIVE-21795)：在分区表上正在进行 mapjoin 时，Rollup 摘要行可能会丢失 | 
| 错误修复 | [HIVE-22987： ClassCastException in](https://issues.apache.org/jira/browse/HIVE-22987) when VectorCoalesce wh DataTypePhysicalVariation en 为空 | 
| 错误修复 | [HIVE-22219](https://issues.apache.org/jira/browse/HIVE-22219)：关闭节点管理器会阻止 LLAP 服务的重启 | 
| 错误修复 | [HIVE-21793](https://issues.apache.org/jira/browse/HIVE-21793)：即使 hive.stats.fetch.column.stats 设置为 false，CBO 也会检索列统计信息 | 
| 错误修复 | [HIVE-22163](https://issues.apache.org/jira/browse/HIVE-22163)：CBO：启用 CBO 会开启统计数据估计，即使禁用估算功能也是如此 | 
| 错误修复 | [HIVE-18735](https://issues.apache.org/jira/browse/HIVE-18735)：像丢失交易属性一样创建表 | 
| 错误修复 | [HIVE-22433](https://issues.apache.org/jira/browse/HIVE-22433)：Hive JDBC 存储处理器：从 BOOLEAN 获取的结果不正确，从 JDBC 数据源获取的时间戳 DataType 结果不正确 | 
| 错误修复 | [HIVE-19430](https://issues.apache.org/jira/browse/HIVE-19430)： ObjectStore。 cleanNotificationEvents OutOfMemory 关于大量待处理的事件 | 
| 错误修复 | [HIVE-20785](https://issues.apache.org/jira/browse/HIVE-20785)：JD DatabaseMetaData BC 中的密钥名称错误。 getPrimaryKeys 方法 | 
| 错误修复 | [HIVE-16116](https://issues.apache.org/jira/browse/HIVE-16116)：当 beeline.properties 中存在 beeline.hiveconfvariables=\$1\$1 时 beeline 会引发 NPE | 
| 错误修复 | [HIVE-20066](https://issues.apache.org/jira/browse/HIVE-20066)：将 hive.load.data.owner 与完整主体进行比较 | 
| 错误修复 | [HIVE-20489](https://issues.apache.org/jira/browse/HIVE-20489)：解释查询挂起的计划 | 
| 错误修复 | [HIVE-21033](https://issues.apache.org/jira/browse/HIVE-21033)：忘记关闭操作会切断更多 HiveServer 2 个输出 | 
| 错误修复 | [HIVE-19888：来自](https://issues.apache.org/jira/browse/HIVE-19888)的误导性 “METASTORE\$1FILTER\$1HOOK 将被忽略” 警告 SessionState | 
| 错误修复 | [HIVE-20303](https://issues.apache.org/jira/browse/HIVE-20303)：INSERT OVERWRITE TABLE db.table PARTITION (...) 如果不存在则投掷 InvalidTableException | 
| 错误修复 | [HIVE-16144](https://issues.apache.org/jira/browse/HIVE-16144)： CompactionInfo 没有 equals/hashCode 但已在 Set 中使用 | 
| 错误修复 | [HIVE-20818](https://issues.apache.org/jira/browse/HIVE-20818)：使用 WHERE 子查询创建的视图会将子查询中引用的视图视为直接输入 | 
| 错误修复 | [HIVE-21005](https://issues.apache.org/jira/browse/HIVE-21005)：LLAP：每次拆分都会读取更多条纹泄漏 ZlibCodecs | 
| 错误修复 | [HIVE-20771](https://issues.apache.org/jira/browse/HIVE-20771)：在空结构上 LazyBinarySerDe 失败。 | 
| 错误修复 | [HIVE-18852](https://issues.apache.org/jira/browse/HIVE-18852)：变更表验证中出现误导性错误消息 | 
| 错误修复 | [HIVE-21124](https://issues.apache.org/jira/browse/HIVE-21124)： HPL/SQL 不支持类似 CREATE TABLE 语句 | 
| 错误修复 | [HIVE-20935](https://issues.apache.org/jira/browse/HIVE-20935)：在 EC2 中上传 llap 包压缩包 tarball 失败导致 LLAP 服务启动失败 | 
| 错误修复 | [HIVE-20409](https://issues.apache.org/jira/browse/HIVE-20409)：Hive ACID：Update/delete/merge不清理 hdfs 暂存目录 | 
| 错误修复 | [HIVE-20570](https://issues.apache.org/jira/browse/HIVE-20570)：包含 hive.optimize.union.remove=true 的 Union ALL 计划不正确 | 
| 错误修复 | [HIVE-20421](https://issues.apache.org/jira/browse/HIVE-20421)：hive-default.xml.template 中存在非法字符实体“\$1b” | 
| 错误修复 | [HIVE-19133](https://issues.apache.org/jira/browse/HIVE-19133)： HS2 WebUI 分阶段性能指标显示不正确 | 
| 错误修复 | [HIVE-18977](https://issues.apache.org/jira/browse/HIVE-18977)：使用 JDO 和直接 SQL 列出分区会返回不同的结果 | 
| 错误修复 | [HIVE-20034](https://issues.apache.org/jira/browse/HIVE-20034)：回滚 MetaStore 异常处理更改以实现向后兼容 | 
| 错误修复 | [HIVE-20672](https://issues.apache.org/jira/browse/HIVE-20672)：登录线程 LlapTaskSchedulerService 应每隔固定时间间隔报告一次 | 
| 错误修复 | [HIVE-12812](https://issues.apache.org/jira/browse/HIVE-12812)：默认启用 mapred.input.dir.recursive 以支持与聚合函数的合并 | 
| 错误修复 | [HIVE-20147](https://issues.apache.org/jira/browse/HIVE-20147)：Hive 流式传输提取满足于同步日志记录 | 
| 错误修复 | [HIVE-19203](https://issues.apache.org/jira/browse/HIVE-19203)：中的线程安全问题 HiveMetaStore | 
| 错误修复 | [HIVE-20091](https://issues.apache.org/jira/browse/HIVE-20091)：Tez：为 FileSinkOperator 输出添加安全凭证 | 
| 错误修复 | [HIVE-16906](https://issues.apache.org/jira/browse/HIVE-16906)：在连接 ATS 之前，Hive ATSHook 应该检查 yarn.timeline-service.enabled | 
| 错误修复 | [HIVE-20714](https://issues.apache.org/jira/browse/HIVE-20714)：显示单个属性的 tblproperties 将返回名称列中的值 | 
| 错误修复 | [HIVE-24730](https://issues.apache.org/jira/browse/HIVE-24730)：Shims 类以静默方式覆盖来自 hive-site.xml 和 tez-site.xml 的值 | 
| 错误修复 | [HIVE-22055](https://issues.apache.org/jira/browse/HIVE-22055)：从文本文件加载数据后，选择计数给出的结果不正确 | 

# Amazon EMR 6.11.0：Hive 发布说明
<a name="Hive-release-history-6110"></a>

## Amazon EMR 6.11.0：Hive 更改
<a name="Hive-release-history-changes-6110"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 改进 | 增加了对多线程删除分区的支持，以提高删除分区的性能 | 
| 改进 | 支持读取编码的 Hive 查询文件 | 
| 改进 | 默认情况下为 Hive on Tez 作业启用 Tez Shuffle Handler | 
| Bug | 添加了一个选项，以允许在启用 hive.groupby.skewindata 时对 Reducer 启用确定性密钥分配，以修复错误结果（在 [HIVE-20220](https://issues.apache.org/jira/browse/HIVE-20220) 中报告） | 
| Bug | 修复了配置默认分区名称时统计数据计算失败的问题 | 
| Bug | 尊重在启用传输中加密的集群中开箱即用 SSL 配置为 HiveServer 2 时传递的任何自定义 SSL 分类参数 | 
| 逆向移植 | [HIVE-23617](https://issues.apache.org/jira/browse/HIVE-23617)：修复了存储 API FindBug 问题 | 
| 逆向移植 |  [HIVE-26408](https://issues.apache.org/jira/browse/HIVE-26408)：矢量化：修复暂存列的取消分配，不要将子列重复用作输出 ConstantVectorExpression  | 
| 逆向移植 | [HIVE-23614](https://issues.apache.org/jira/browse/HIVE-23614)：始终传递 HiveConfig 给 removeTempOr DuplicateFiles | 
| 逆向移植 | [HIVE-23354](https://issues.apache.org/jira/browse/HIVE-23354)：从中删除文件大小完整性检查 compareTempOr DuplicateFiles | 
| 逆向移植 | [HIVE-20344](https://issues.apache.org/jira/browse/HIVE-20344)：已修复 PrivilegeSynchronizer SBA 投掷 AccessControlException的问题。还引入了 hive.privilege.synchronizer 属性来禁用权限同步器 | 
| 逆向移植 | [HIVE-15826](https://issues.apache.org/jira/browse/HIVE-15826)：支持为所有人配置 “序列化.encoding” SerDes | 
| 逆向移植 | [HIVE-18284](https://issues.apache.org/jira/browse/HIVE-18284)：修复使用 dynpart 排序优化插入带有“distribute by”子句的数据时出现的 NPE | 
| 逆向移植 | [HIVE-24930](https://issues.apache.org/jira/browse/HIVE-24930)：在向量化代码路径中不使用来自子操作的 operator.setDone() 短路（如果 childSize == 1） | 
| 逆向移植 | [HIVE-24523](https://issues.apache.org/jira/browse/HIVE-24523)：的矢量化读取路径 LazySimpleSerde 不支持时间戳的 SERDEPROPERTIES | 
| 逆向移植 | [HIVE-23265](https://issues.apache.org/jira/browse/HIVE-23265)：在设置了限制和偏移的情况下返回重复的 rowset | 
| 逆向移植 | [HIVE-21492](https://issues.apache.org/jira/browse/HIVE-21492)： VectorizedParquetRecordReader 无法读取使用节俭/自定义工具生成的 parquet 文件 | 
| 逆向移植 | [HIVE-22540](https://issues.apache.org/jira/browse/HIVE-22540)：矢量化：Decimal64 列不适用。 VectorizedBatchUtil makeLikeColumn向量 () | 
| 逆向移植 | [HIVE-22588](https://issues.apache.org/jira/browse/HIVE-22588)：切换向量 groupby 模式时，刷新其余分组集的剩余行 | 
| 逆向移植 | [HIVE-22551](https://issues.apache.org/jira/browse/HIVE-22551)： BytesColumnVector initBuffer 应始终如一地清理向量和长度 | 
| 逆向移植 | [HIVE-22448](https://issues.apache.org/jira/browse/HIVE-22448)：CBO：使用分组按键扩展不同的多个计数 | 
| 逆向移植 | [HIVE-22248](https://issues.apache.org/jira/browse/HIVE-22248)：修复持续存在的统计问题 | 
| 逆向移植 | [HIVE-22210](https://issues.apache.org/jira/browse/HIVE-22210)：向量化可以重复使用筛选中涉及的计算输出列 | 
| 逆向移植 | [HIVE-21531](https://issues.apache.org/jira/browse/HIVE-21531)：向量化：所有空哈希码都不是使用 Murmur3 计算的 | 
| 逆向移植 | [HIVE-20419](https://issues.apache.org/jira/browse/HIVE-20419)：矢量化：防止在哈希映射键中使用 VectorPartitionDesc 后发生变异 | 
| 逆向移植 | [HIVE-19388](https://issues.apache.org/jira/browse/HIVE-19388)： ClassCastException 在 VectorMapJoinCommonOperator 初始化期间 | 
| 逆向移植 | [HIVE-21584](https://issues.apache.org/jira/browse/HIVE-21584)：Java 11 准备工作：系统类加载器不是 URLClass加载器 | 
| 逆向移植 | [HIVE-25107](https://issues.apache.org/jira/browse/HIVE-25107)：类路径日志记录应处于 DEBUG 级别（\$12271） | 
| 逆向移植 | [HIVE-22097](https://issues.apache.org/jira/browse/HIVE-22097)：不兼容 java.util。 ArrayList适用于 java 11 | 
| 逆向移植 | [HIVE-23938](https://issues.apache.org/jira/browse/HIVE-23938)：LLAP: JDK11 -某些 GC 日志文件轮换相关的 jvm 参数不能再使用了 | 
| 逆向移植 | [HIVE-26226](https://issues.apache.org/jira/browse/HIVE-26226)：在 upgrade-acid 中将 jdk.tools dep 从 hive-metastore 中排除 | 
| 逆向移植 | [HIVE-17879](https://issues.apache.org/jira/browse/HIVE-17879)：升级 Datanucleus Maven 插件 | 
| 逆向移植 | [HIVE-27004](https://issues.apache.org/jira/browse/HIVE-27004)： DateTimeFormatterBuilder\$1 appendZoneText 无法在高于 8 的 Java 版本中解析 'UTC\$1' | 
| 逆向移植 | [HIVE-16812](https://issues.apache.org/jira/browse/HIVE-16812)： VectorizedOrcAcidRowBatchReader不筛选删除事件 | 
| 逆向移植 | [HIVE-17917](https://issues.apache.org/jira/browse/HIVE-17917)： VectorizedOrcAcidRowBatchReader。 computeOffsetAnd存储桶优化 | 
| 逆向移植 | [HIVE-19985](https://issues.apache.org/jira/browse/HIVE-19985)：ACID：跳过解码只读查询的 ROW\$1\$1ID 部分 | 
| 逆向移植 | [HIVE-20635](https://issues.apache.org/jira/browse/HIVE-20635)： VectorizedOrcAcidRowBatchReader不筛选原始文件的删除事件 | 
| 升级 | 将 Javadoc 升级到 3.3.1 | 
| 升级 | 将 Javassist 升级到 3.24.1-GA | 
| 升级 | 更新 apache-directory-server到 2.0.0-M14 | 

## 新配置
<a name="Hive-release-history-changes-6110-new-configurations"></a>


****  

| Name | 分类 | 说明 | 
| --- | --- | --- | 
| hive.metastore.fs.drop.partition.threads | hive-site | 删除分区线程池中的核心线程数。 | 
| hive.metastore.fs.drop.partition.keepalive.time | hive-site | 空闲的丢弃分区异步线程（来自线程池）在终止之前等待新任务到达的时间（以秒为单位）。 | 
| hive.metastore.fs.drop.partition.threadpool.max.queue.size | hive-site | 线程池中用于从文件系统中删除分区的最大队列大小。 | 
| hive.groupby.enable.deterministic.distribution | hive-site | 启用向 Reducer 的密钥分配确定性。它将在调用用于随机分区的 rand 函数时传递一个恒定的种子值。 | 
| hive.privilege.synchronizer | hive-site | 是否在 HiveServer 2 中定期同步来自外部授权者的权限。 | 
| hive.cli.query.file.encoding | hive-site | cli 参数中提供的所有类型的查询文件（查询文件、init 查询文件、rc 文件等）的文件编码。 | 
| hive.emr.tez.shuffle.enabled | hive-site | Hive on Tez 作业现在默认使用 tez\$1shuffle 而不是 mapreduce\$1shuffle 作为默认 Shuffle 处理程序。 | 

## 已弃用的配置
<a name="Hive-release-history-changes-6110-old-configurations"></a>

由于 [HIVE-23354](https://issues.apache.org/jira/browse/HIVE-23354) 的原因，以下配置属性已弃用并且在 Amazon EMR 发行版 6.11.0 及更高版本中不再支持。


| Name | 默认 值 | 
| --- | --- | 
| `hive.mapred.reduce.tasks.speculative.execution` | `false` | 
| `tez.am.speculation.enabled` | `false` | 

# Amazon EMR 6.10.0：Hive 发布说明
<a name="Hive-release-history-6100"></a>

## Amazon EMR 6.10.0：Hive 更改
<a name="Hive-release-history-changes-6100"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 功能 | [通过 IAM PassThrough（HiveCLI/Steps API）为 Apache Hive 查询（](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html)写入）启用 AWS Lake Formation 基于访问控制。 | 
| 改进 | 默认情况下禁用配置 hive.log.explain.output 以减小日志大小 | 
| 逆向移植 | [HIVE-26408](https://issues.apache.org/jira/browse/HIVE-26408)：矢量化：修复暂存列的取消分配，不要将子列重复用作输出 ConstantVectorExpression  | 
| 逆向移植 | [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269)：修复由于 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 导致的统计数据丢失导致的动态分区插入查询中错误的 Reducer 计数。 | 
| 逆向移植 | [HIVE-22891](https://issues.apache.org/jira/browse/HIVE-22891)：在非 LLAP 执行 CombineHiveRecord 模式下跳过 PartitionDesc 提取  | 
| 逆向移植 | [HIVE-23804](https://issues.apache.org/jira/browse/HIVE-23804)：在 Hive 元存储架构中为列统计数据特定表添加默认数据库，使其向后兼容 | 
| 逆向移植 | [HIVE-25277](https://issues.apache.org/jira/browse/HIVE-25277)：云对象存储的 Hive 分区删除速度很慢，价格昂贵 ListFiles | 
| 逆向移植 | [HIVE-19202](https://issues.apache.org/jira/browse/HIVE-19202)：国会预算办公室因进入而失败 NullPointerException 。 HiveAggregate isBucketedInput() | 
| 逆向移植 | [HIVE-19048](https://issues.apache.org/jira/browse/HIVE-19048)：修复 beeline Initscript 错误被忽略的问题 | 
| 逆向移植 | [HIVE-21085](https://issues.apache.org/jira/browse/HIVE-21085)：实体化视图注册表启动非外部 tez 会话 | 
| 逆向移植 | [HIVE-21675](https://issues.apache.org/jira/browse/HIVE-21675)：如果视图已经存在，CREATE VIEW IF NOT EXISTS 将返回错误而不是“确定”。这是 Hive 2 的回归。 | 
| 逆向移植 | [HIVE-21646](https://issues.apache.org/jira/browse/HIVE-21646)：Tez： TezTasks 防止逃避线程日志上下文 | 
| 逆向移植 | [HIVE-22054](https://issues.apache.org/jira/browse/HIVE-22054)：避免使用递归列出检查目录是否为空 | 
| 逆向移植 | [HIVE-16587](https://issues.apache.org/jira/browse/HIVE-16587)：插入带有嵌套空值的复杂类型时为 NPE | 
| 逆向移植 | [HIVE-22647](https://issues.apache.org/jira/browse/HIVE-22647)：默认启用会话池 | 
| 逆向移植 | [HIVE-13288](https://issues.apache.org/jira/browse/HIVE-13288)： DagUtils.localizeResource 中的异常消息令人困惑 | 
| 逆向移植 | [HIVE-23870](https://issues.apache.org/jira/browse/HIVE-23870)：在中优化多个文本转换。 WritableHiveCharObjectInspector getPrimitiveJava对象/ HiveCharWritable | 
| 逆向移植 | [HIVE-21498](https://issues.apache.org/jira/browse/HIVE-21498)：将 Thrift 升级到 0.13.0 | 
| 逆向移植 | [HIVE-24378](https://issues.apache.org/jira/browse/HIVE-24378)：在转换十进制之前，不会删除前导空格和尾随空格 | 
| 逆向移植 | [HIVE-21341](https://issues.apache.org/jira/browse/HIVE-21341)：合理的默认值：hive.server2.idle.operation.timeout 和 hive.server2.idle.session.timeout 过高 | 
| 逆向移植 | [HIVE-22465](https://issues.apache.org/jira/browse/HIVE-22465)：在中添加 ssl conf TezConfigurationFactory | 
| 逆向移植 | [HIVE-24710](https://issues.apache.org/jira/browse/HIVE-24710)：优化 count(\$1) 的 PTF 迭代以降低 CPU 和 IO 成本 | 
| 逆向移植 | [HIVE-15406](https://issues.apache.org/jira/browse/HIVE-15406)：考虑对新的“trunc”函数进行向量化 | 
| 逆向移植 | [HIVE-21541](https://issues.apache.org/jira/browse/HIVE-21541)：修复 HIVE-15406 中缺少的 asf 标题 | 
| 逆向移植 | [HIVE-24808](https://issues.apache.org/jira/browse/HIVE-24808)：缓存已解析的日期 | 
| 逆向移植 | [HIVE-24746](https://issues.apache.org/jira/browse/HIVE-24746)：PTF： TimestampValueBoundaryScanner可以在距离计算过程中进行优化 | 
| 逆向移植 | [HIVE-25059](https://issues.apache.org/jira/browse/HIVE-25059)：在复制过程中，更改事件被转换为重命名 | 
| 逆向移植 | [HIVE-25142](https://issues.apache.org/jira/browse/HIVE-25142)：在映射联接快速哈希表中重新哈希会导致大密钥损坏 | 
| 逆向移植 | [HIVE-23756](https://issues.apache.org/jira/browse/HIVE-23756)：向 package.jdo 文件添加了更多限制 | 
| 逆向移植 | [HIVE-25150](https://issues.apache.org/jira/browse/HIVE-25150)：在进行十进制转换之前不会移除制表符，类似于作为 HIVE-24378 一部分修复的空格字符 | 
| 逆向移植 | [HIVE-25093](https://issues.apache.org/jira/browse/HIVE-25093)：date\$1format() UDF 仅以 UTC 时区返回输出 | 
| 逆向移植 | [HIVE-25268](https://issues.apache.org/jira/browse/HIVE-25268)：如果本地时区不是世界标准时间，则对于 1900 年之前的日期，date\$1format udf 将返回错误的结果 | 
| 逆向移植 | [HIVE-25338](https://issues.apache.org/jira/browse/HIVE-25338)：如果输入为空，则在 conv UDF 中出现 AIOBE | 
| 逆向移植 | [HIVE-22400](https://issues.apache.org/jira/browse/HIVE-22400)：带时间的 UDF 分钟返回空值 | 
| 逆向移植 | [HIVE-25058](https://issues.apache.org/jira/browse/HIVE-25058)：PTF： TimestampValueBoundaryScanner可以在距离计算期间进行优化 pt2- isDistanceGreater | 
| 逆向移植 | [HIVE-25449](https://issues.apache.org/jira/browse/HIVE-25449)：datediff() 在某些非 UTC 时区的 tez 任务中运行时给出了错误的输出 | 
| 逆向移植 | [HIVE-23688](https://issues.apache.org/jira/browse/HIVE-23688)：矢量化： IndexArrayOutOfBoundsException 适用于包含空值的地图类型列 | 
| 逆向移植 | [HIVE-22247](https://issues.apache.org/jira/browse/HIVE-22247)： FileNotFoundException 当分区的任务输出为空时，Hive 会HFileOutputFormat 抛出 | 
| 逆向移植 | [HIVE-25570](https://issues.apache.org/jira/browse/HIVE-25570)：Hive 应发送完整的 URL 路径以获得命令插入覆盖位置的授权 | 
| 逆向移植 | [HIVE-22903](https://issues.apache.org/jira/browse/HIVE-22903)：如果分区子句中有常量表达式，向量化的 row\$1number() 会在一批之后重置行号 | 
| 逆向移植 | [HIVE-25549](https://issues.apache.org/jira/browse/HIVE-25549)：在 PARTITION BY 或 ORDER BY 子句中带有表达式的窗口函数的结果错误 | 
| 逆向移植 | [HIVE-25579](https://issues.apache.org/jira/browse/HIVE-25579)：LOAD 覆盖会附加而不是覆盖 | 
| 逆向移植 | [HIVE-25659](https://issues.apache.org/jira/browse/HIVE-25659)：应根据 SQL 数据库允许的最大参数来拆分带有 IN/(NOT IN) 的元存储直接 sql 查询 | 
| 逆向移植 | [HIVE-20502](https://issues.apache.org/jira/browse/HIVE-20502)：修复使用列统计数据时运行 skewjoin\$1mapjoin10.q 时出现的 NPE 问题。 | 
| 逆向移植 | [HIVE-25765](https://issues.apache.org/jira/browse/HIVE-25765)：当文件大小较大时，skip.header.line.count 属性会跳过每个块的行 FetchOperator  | 
| Bug | 在 hive.stats.column.autogather 和 hive.groupby.skewindata 都启用的特定情况下，在插入时修复 NPE  | 
| Bug | 在未设置 mapred.tasktracker.expiry.interval 值时修复 NPE | 

# Amazon EMR 6.9.0：Hive 发布说明
<a name="Hive-release-history-690"></a>

## Amazon EMR 6.9.0：Hive 更改
<a name="Hive-release-history-changes-690"></a>


****  

| Type | 说明 | 
| --- | --- | 
| 升级 | 将 Jetty 升级到 [9.4.48.v20220622](https://github.com/eclipse/jetty.project/releases/tag/jetty-9.4.48.v20220622) | 
| 升级 | 对于 Hadoop 3.3.3 的支持 | 
| 功能 | Amazon EMR Hive 使用 GCSC API 与 Lake Formation 集成，以实现交互式工作负载。 | 
| 功能 | Amazon EMR Hive 与 Iceberg 的集成。 | 
| 改进 | 如果使用 Amazon EMR 安全[配置启用传输中加密](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html#emr-encryption-intransit)，则在 HiveServer 2 中启用 SSL。 | 
| 改进 | 默认情况下启用 Hive EMRFS Amazon S3 优化提交程序。有关更多信息，请参阅 [启用 Hive EMRFS S3 优化提交程序](hive-optimized-committer.md)。 | 
| 改进 | [添加仅继`HiveHBaseTableInputFormatV2`承的映射版本 InputFormat 以修复 SPARK-34210。](https://issues.apache.org/jira/browse/SPARK-34210)将 hive.hbase.inputformat.v2 设置为 true 以使用它。 | 
| 改进 | 等待 TezaM 在后台使用 [hive.cli.tez.session.async]() 启动，而不是终止它后立即启动新版本。使用 hive.emr.cli.tez.session.open.timeout 以秒为单位设置此超时。 | 
| 改进 | 添加选项 [hive.conf.restricted.list.append]()，以将逗号分隔的配置附加到现有的受限配置列表 hive.conf.restricted.list 中。 | 
| 改进 | 由于未为数据库定义位置而导致 Hive 查询失败时，会出现更清晰的错误消息。 | 
| 逆向移植 | [HIVE-24484](https://issues.apache.org/jira/browse/HIVE-24484)：将 Hadoop 升级到 3.3.1，并将 Tez 升级到 0.10.2  | 
| 逆向移植 | [HIVE-22398](https://issues.apache.org/jira/browse/HIVE-22398)：通过移除 YARN 队列管理 ShimLoader。 | 
| 逆向移植 | [HIVE-23190](https://issues.apache.org/jira/browse/HIVE-23190)：LLAP：修改 IndexCache 以将文件系统对象传递给。 TezSpillRecord | 
| 逆向移植 | [HIVE-22185](https://issues.apache.org/jira/browse/HIVE-22185)：HADOOP-15832 会导致使用 MiniYarn 集群进行测试时出现问题。 | 
| 逆向移植 | [HIVE-21670](https://issues.apache.org/jira/browse/HIVE-21670)：将 mockito-all 替换为 mockito-core 依赖项。 | 
| 逆向移植 | [HIVE-24542](https://issues.apache.org/jira/browse/HIVE-24542)：准备 Guava 以进行升级。 | 
| 逆向移植 | [HIVE-23751](https://issues.apache.org/jira/browse/HIVE-23751): QTest: 在 HADOOP-16582 之后重写\$1mkdirs()方法ProxyFileSystem以对齐。 | 
| 逆向移植 | [HIVE-21603](https://issues.apache.org/jira/browse/HIVE-21603)：准备 Java 11：更新 powermock 版本。 | 
| 逆向移植 | [HIVE-24083](https://issues.apache.org/jira/browse/HIVE-24083)：Hadoop 3.3.0 中出现 hcatalog 错误：需要身份验证类型。 | 
| 逆向移植 | [HIVE-24282](https://issues.apache.org/jira/browse/HIVE-24282)：除非明确提及，否则显示列不得对输出列进行排序。 | 
| 逆向移植 | [HIVE-20656](https://issues.apache.org/jira/browse/HIVE-20656)：合理的默认值：映射聚合内存配置过于激进。 | 
| 逆向移植 | [HIVE-25443](https://issues.apache.org/jira/browse/HIVE-25443)：当值超过 1024 时，Arrow SerDe 无法 serialize/deserialize 复杂化数据类型 | 
| 逆向移植 | [HIVE-19792](https://issues.apache.org/jira/browse/HIVE-19792)：将 orc 升级到 1.5.2 并启用 decimal\$164 架构发展测试。 | 
| 逆向移植 | [HIVE-20437](https://issues.apache.org/jira/browse/HIVE-20437)：处理从浮点数、双精度浮点数和十进制数转换的架构发展。 | 
| 逆向移植 | [HIVE-21987](https://issues.apache.org/jira/browse/HIVE-21987)：Hive 无法读取使用十进制注释的 Parquet int32。 | 
| 逆向移植 | [HIVE-20038](https://issues.apache.org/jira/browse/HIVE-20038)：对非分桶表和未分区表的更新查询会引发 NPE。 | 

## Amazon EMR 6.9.0：Hive 已知问题
<a name="emr-Hive-690-issues"></a>
+ 在 6.6.0 到 6.9.x 版 Amazon EMR 中，带有动态分区和 ORDER BY 或 SORT BY 子句的 INSERT 查询将始终具有两个 Reducer。此问题是由于 OSS 更改 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 所致，该更改将动态排序分区优化置于基于成本的决策之下。如果您的工作负载不需要对动态分区进行排序，建议将 `hive.optimize.sort.dynamic.partition.threshold` 属性设置为 `-1` 以禁用新功能并获得计算正确的 Reducer 数量。此问题已作为 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 的一部分在 OSS Hive 中修复，并已在 Amazon EMR 6.10.0 中修复。

# Amazon EMR 6.8.0：Hive 发布说明
<a name="Hive-release-history-680"></a>

## Amazon EMR 6.8.0：Hive 更改
<a name="Hive-release-history-changes-680"></a>


| Type | 说明 | 
| --- | --- | 
| 改进 | 减少 msck 命令中的文件系统调用。性能改进（在 10k 以上的分区上提高约 15-20 倍） | 
| 逆向移植 | [HIVE-20678](https://issues.apache.org/jira/browse/HIVE-20678)：Hive HBase TableOutputFormat 应实施 HiveOutputFormat 以确保兼容性 | 
| 逆向移植 | [HIVE-21040](https://issues.apache.org/jira/browse/HIVE-21040)：msck 在目录树的最后一级列出不必要的文件 | 
| 逆向移植 | [HIVE-21460](https://issues.apache.org/jira/browse/HIVE-21460)：加载数据后再进行 select \$1 查询会导致结果不正确 | 
| 逆向移植 | [HIVE-21660](https://issues.apache.org/jira/browse/HIVE-21660)：当使用 union all 和 later with explode 时结果错误 | 
| 逆向移植 | [HIVE-22505](https://issues.apache.org/jira/browse/HIVE-22505)：由 ClassCastException 错误的矢量化运算符选择引起 | 
| 逆向移植 | [HIVE-22513](https://issues.apache.org/jira/browse/HIVE-22513)：过滤器运算中强制转换列的持续传播可能会导致不正确的结果 | 
| 逆向移植 | [HIVE-23435](https://issues.apache.org/jira/browse/HIVE-23435)：完整的外部联接结果缺少行 | 
| 逆向移植 | [HIVE-24209](https://issues.apache.org/jira/browse/HIVE-24209)：启用向量化时，NOT BETWEEN 运算的搜索参数转换不正确 | 
| 逆向移植 | [HIVE-24934](https://issues.apache.org/jira/browse/HIVE-24934)：通用UDFSQCount检查中不需要 VectorizedExpressions 注释 | 
| 逆向移植 | [HIVE-25278](https://issues.apache.org/jira/browse/HIVE-25278)： HiveProjectJoinTransposeRule 可能使用窗口表达式进行无效的转换 | 
| 逆向移植 | [HIVE-25505](https://issues.apache.org/jira/browse/HIVE-25505)：如果第一行为空，则 header. skip.header.line.count 的结果不正确 | 
| 逆向移植 | [HIVE-26080](https://issues.apache.org/jira/browse/HIVE-26080)：将 accumulo-core 升级到 1.10.1 | 
| 逆向移植 | [HIVE-26235](https://issues.apache.org/jira/browse/HIVE-26235)：二进制列上的 OR 条件返回空结果 | 
| Bug | 修复启动期间 stderr 中的多个 SLF4 J 绑定警告日志 | 
| Bug | 修复当分区和表位于不同文件系统时 SHOW TABLE EXTENDED 查询失败并出现 Wrong FS 错误的问题。 | 

## Amazon EMR 6.8.0：Hive 已知问题
<a name="emr-Hive-680-issues"></a>
+ 在 6.6.0 到 6.9.x 版 Amazon EMR 中，带有动态分区和 ORDER BY 或 SORT BY 子句的 INSERT 查询将始终具有两个 Reducer。此问题是由于 OSS 更改 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 所致，该更改将动态排序分区优化置于基于成本的决策之下。如果您的工作负载不需要对动态分区进行排序，建议将 `hive.optimize.sort.dynamic.partition.threshold` 属性设置为 `-1` 以禁用新功能并获得计算正确的 Reducer 数量。此问题已作为 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 的一部分在 OSS Hive 中修复，并已在 Amazon EMR 6.10.0 中修复。

# Amazon EMR 6.7.0：Hive 发布说明
<a name="Hive-release-history-670"></a>

## Amazon EMR 6.7.0：Hive 更改
<a name="Hive-release-history-changes-670"></a>


| Type | 说明 | 
| --- | --- | 
| 功能 | [亚马逊 EMR Hive 与。 LakeFormation](https://aws.amazon.com/about-aws/whats-new/2022/07/fine-grained-access-controls-job-scoped-iam-roles-integration-aws-lake-formation-apache-spark-hive-amazon-emr-ec2-clusters/) | 
| 功能 | 适用于 Hive EMRFS Amazon S3 优化提交程序的其他审核日志记录。Hive config：hive.blobstore.output-committer.logging，默认值：false | 
| 功能 | 插入时删除的目标目录被空选择结果覆盖为未 table/static 分区的分区，其行为与 Hive 2.x 类似。Hive config：hive.emr.iow.clean.target.dir，默认值：false | 
| Bug | 修复了在将 Hive EMRFS Amazon S3 优化提交程序与分区存储桶排序结合使用时出现间歇性查询失败的问题。 | 
| 升级 | 已将 Hive 升级到版本 3.1.3。请参阅 [Apache Hive 3.1.3 发布说明](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12346277&styleName=Html&projectId=12310843)以了解更多详细信息。 | 
| 升级 | 已将 Parquet 升级到 [1.12.2](https://github.com/apache/parquet-mr/blob/apache-parquet-1.12.2/CHANGES.md)。 | 
| 逆向移植 | [HIVE-20065](https://issues.apache.org/jira/browse/HIVE-20065)：元存储不应依赖 jackson 1.x | 
| 逆向移植 | [HIVE-20071](https://issues.apache.org/jira/browse/HIVE-20071)：迁移到 jackson 2.x 并阻止使用 | 
| 逆向移植 | [HIVE-20607](https://issues.apache.org/jira/browse/HIVE-20607)： TxnHandler 应该 PreparedStatement 用于执行直接 SQL 查询 | 
| 逆向移植 | [HIVE-20740](https://issues.apache.org/jira/browse/HIVE-20740)：移除 ObjectStore .setConf 方法中的全局锁 | 
| 逆向移植 | [HIVE-20961](https://issues.apache.org/jira/browse/HIVE-20961)：停用 NVL 实施 | 
| 逆向移植 | [HIVE-22059](https://issues.apache.org/jira/browse/HIVE-22059)：hive-exec jar 不包含（fasterxml）jackson 库 | 
| 逆向移植 | [HIVE-22351](https://issues.apache.org/jira/browse/HIVE-22351)：修复了中不正确的线程 ObjectStore用法 TestObjectStore | 
| 逆向移植 | [HIVE-23534](https://issues.apache.org/jira/browse/HIVE-23534)： RetryingMetaStoreClient\$1invoke 中没有 NPE 在没有消息 MetaException的情况下捕捉时 | 
| 逆向移植 | [HIVE-24048](https://issues.apache.org/jira/browse/HIVE-24048)：将 Jackson 组件统一到版本 2.10.最新版：Hive | 
| 逆向移植 | [HIVE-24768](https://issues.apache.org/jira/browse/HIVE-24768)：在所有地方均使用 jackson-bom 进行版本替换 | 
| 逆向移植 | [HIVE-24816](https://issues.apache.org/jira/browse/HIVE-24816)：由于 CVE-2020-25649 的原因，将 jackson 升级到 2.10.5.1 或 2.11.0\$1 | 
| 逆向移植 | [HIVE-25971](https://issues.apache.org/jira/browse/HIVE-25971)：Tez 任务关闭因缓存线程池未关闭而延迟 | 
| 逆向移植 | [HIVE-26036](https://issues.apache.org/jira/browse/HIVE-26036)：由 get MTable () in 引起的 NPE ObjectStore | 

## Amazon EMR 6.7.0：Hive 已知问题
<a name="emr-Hive-670-issues"></a>
+ 如果使用窗口函数对与交集函数相同的列进行查询，则可能会导致如 [HIVE-25278](https://issues.apache.org/jira/browse/HIVE-25278) 中报告的转换无效问题，并导致查询结果不正确或查询失败。解决方法是在查询级别为此类查询禁用 CBO。修复程序将在 6.7.0 之后的 Amazon EMR 发行版中提供。有关更多信息，请联系 AWS 支持人员。
+ 在 6.6.0 到 6.9.x 版 Amazon EMR 中，带有动态分区和 ORDER BY 或 SORT BY 子句的 INSERT 查询将始终具有两个 Reducer。此问题是由于 OSS 更改 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 所致，该更改将动态排序分区优化置于基于成本的决策之下。如果您的工作负载不需要对动态分区进行排序，建议将 `hive.optimize.sort.dynamic.partition.threshold` 属性设置为 `-1` 以禁用新功能并获得计算正确的 Reducer 数量。此问题已作为 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 的一部分在 OSS Hive 中修复，并已在 Amazon EMR 6.10.0 中修复。

# Amazon EMR 6.6.0：Hive 发布说明
<a name="Hive-release-history-660"></a>

## Amazon EMR 6.6.0：Hive 更改
<a name="Hive-release-history-changes-660"></a>


| Type | 说明 | 
| --- | --- | 
| 升级 |  将 Parquet 升级到 [1.12.1](https://issues.apache.org/jira/browse/HIVE-24408)。  | 
| 升级 |  将 jetty jars 版本升级到 9.4.43.v20210629  | 
| Bug | 修复了在 Hive 集群上启用 LLAP 时导致在所有 task/core 节点上安装 Hive 的问题。 | 
| 逆向移植 | [HIVE-25942](https://issues.apache.org/jira/browse/HIVE-25942)：由于 CVE-2021-29425 而将 commons-io 升级到 2.8.0 | 
| 逆向移植 | [HIVE-25726](https://issues.apache.org/jira/browse/HIVE-25726)：由于 CVE-2020-13936 而将速度升级到 2.3 | 
| 逆向移植 | [HIVE-25680](https://issues.apache.org/jira/browse/HIVE-25680)：授权 \$1get\$1table\$1meta HiveMetastore Server API 使用任何 HiveMetastore授权模型。 | 
| 逆向移植 | [HIVE-25554](https://issues.apache.org/jira/browse/HIVE-25554)：将 arrow 版本升级到 0.15 | 
| 逆向移植 | [HIVE-25242](https://issues.apache.org/jira/browse/HIVE-25242)：使用 vectorized.adaptor = chosen 时，查询执行速度极慢 | 
| 逆向移植 | [HIVE-25085](https://issues.apache.org/jira/browse/HIVE-25085)：不再在会话之间共享 MetaStore 客户端。 | 
| 逆向移植 | [HIVE-24827](https://issues.apache.org/jira/browse/HIVE-24827)：Hive 聚合查询为非文本文件返回错误结果。 | 
| 逆向移植 | [HIVE-24683](https://issues.apache.org/jira/browse/HIVE-24683)：Hadoop23Shims 在不存在的路径上 getFileId 容易出现 NPE | 
| 逆向移植 | [HIVE-24656](https://issues.apache.org/jira/browse/HIVE-24656)：对于 map 和数组类型为 null 的查询，出现 CBO 失败 | 
| 逆向移植 | [HIVE-24556](https://issues.apache.org/jira/browse/HIVE-24556)： DefaultGraphWalker 针对没有孙子的情况进行优化 | 
| 逆向移植 | [HIVE-24408](https://issues.apache.org/jira/browse/HIVE-24408)：将 Parquet 升级到 1.11.1 | 
| 逆向移植 | [HIVE-24391](https://issues.apache.org/jira/browse/HIVE-24391)：修复分支 3.1 中的修复 TestOrcFile 故障 | 
| 逆向移植 | [HIVE-24362](https://issues.apache.org/jira/browse/HIVE-24362)：对于具有大量节点的树而言，AST 树处理非最优 | 
| 逆向移植 | [HIVE-24316](https://issues.apache.org/jira/browse/HIVE-24316): 在 branch-3.1 中将 ORC 从 1.5.6 升级到 1.5.8 | 
| 逆向移植 | [HIVE-24307](https://issues.apache.org/jira/browse/HIVE-24307)：带属性文件和 -e 参数的 Beeline 失败 | 
| 逆向移植 | [HIVE-24245](https://issues.apache.org/jira/browse/HIVE-24245)：带有计数和不同分区的向量化 PTF 会产生错误结果。 | 
| 逆向移植 | [HIVE-24224](https://issues.apache.org/jira/browse/HIVE-24224)：修复了在压缩文件上跳过 header/footer Tez 上的 Hive 的问题 | 
| 逆向移植 | [HIVE-24157](https://issues.apache.org/jira/browse/HIVE-24157)：严格模式在 CAST 时间戳 ↔ 数值上失败 | 
| 逆向移植 | [HIVE-24113](https://issues.apache.org/jira/browse/HIVE-24113)：仿制药中的 NPE UDFTo UnixTimeStamp | 
| 逆向移植 | [HIVE-23987](https://issues.apache.org/jira/browse/HIVE-23987)：将 arrow 版本升级到 0.11.0 | 
| 逆向移植 | [HIVE-23972](https://issues.apache.org/jira/browse/HIVE-23972)：将外部客户端 ID 添加到 LLAP 外部客户端 | 
| 逆向移植 | [HIVE-23806](https://issues.apache.org/jira/browse/HIVE-23806)：避免在扩展架构的情况下清除所有分区中的列统计数据状态。这提高了 alter table add columns 语句的运行时间。 | 
| 逆向移植 | [HIVE-23779](https://issues.apache.org/jira/browse/HIVE-23779)： BasicStatsTask 信息未在 beeline 控制台中打印 | 
| 逆向移植 | [HIVE-23306](https://issues.apache.org/jira/browse/HIVE-23306)：如果 System.getProperty 设置了配置，则 RESET 命令不起作用 | 
| 逆向移植 | [HIVE-23164](https://issues.apache.org/jira/browse/HIVE-23164)：由于非进程守护程序线程，服务器未正确终止 | 
| 逆向移植 | [HIVE-22967](https://issues.apache.org/jira/browse/HIVE-22967)：支持 Hive on Tez 的 hive.reloadable.aux.jars.path | 
| 逆向移植 | [HIVE-22934](https://issues.apache.org/jira/browse/HIVE-22934)：Hive 服务器交互式日志计数器用于错误流 | 
| 逆向移植 | [HIVE-22901](https://issues.apache.org/jira/browse/HIVE-22901): 变量替换可能导致循环引用中出现 OOM | 
| 逆向移植 | [HIVE-22769](https://issues.apache.org/jira/browse/HIVE-22769): 压缩文本文件拆分生成期间出现查询结果不正确和查询失败 | 
| 逆向移植 | [HIVE-22716](https://issues.apache.org/jira/browse/HIVE-22716)：Reading ByteBuffer to 被破坏了 ParquetFooterInputFromCache | 
| 逆向移植 | [HIVE-22648](https://issues.apache.org/jira/browse/HIVE-22648)：将 Parquet 升级到 1.11.0 | 
| 逆向移植 | [HIVE-22640](https://issues.apache.org/jira/browse/HIVE-22640)：Decimal64ColumnVector： ClassCastException 当分区列类型为十进制时 | 
| 逆向移植 | [HIVE-22621](https://issues.apache.org/jira/browse/HIVE-22621)：不稳定的测试用例： TestLlapSignerImpl.testSigning | 
| 逆向移植 | [HIVE-22533](https://issues.apache.org/jira/browse/HIVE-22533)：修复可能出现的 LLAP 进程守护程序 Web UI 漏洞 | 
| 逆向移植 | [HIVE-22532](https://issues.apache.org/jira/browse/HIVE-22532)：PTFPPD 可能无法通过函数错误地突破极限 Rank/DenseRank  | 
| 逆向移植 | [HIVE-22514](https://issues.apache.org/jira/browse/HIVE-22514)： HiveProtoLoggingHook 可能会消耗大量内存 | 
| 逆向移植 | [HIVE-22476](https://issues.apache.org/jira/browse/HIVE-22476)：当 hive.fetch.task.conversion 设置为 none 时，hive datediff 函数所提供的结果不一致 | 
| 逆向移植 | [HIVE-22429](https://issues.apache.org/jira/browse/HIVE-22429)：在 hive 3 上通过 bucketing\$1version 1 迁移的集群表使用 bucketing\$1version 2 进行插入 | 
| 逆向移植 | [HIVE-22412](https://issues.apache.org/jira/browse/HIVE-22412)：解释时 StatsUtils 扔掉 NPE | 
| 逆向移植 | [HIVE-22360](https://issues.apache.org/jira/browse/HIVE-22360)：当加载的文件中的列数多于表架构中的列数时，最后一列 MultiDelimitSerDe 返回错误的结果 | 
| 逆向移植 | [HIVE-22332](https://issues.apache.org/jira/browse/HIVE-22332)：自 ORC-540 以来，Hive 会确保有效的架构发展设置 | 
| 逆向移植 | [HIVE-22331](https://issues.apache.org/jira/browse/HIVE-22331)：不带参数的 unix\$1timestamp 以毫秒为单位（而不是秒）返回时间戳 | 
| 逆向移植 | [HIVE-22275](https://issues.apache.org/jira/browse/HIVE-22275)： OperationManager。 queryIdOperation无法正确清理多个 queryId | 
| 逆向移植 | [HIVE-22273](https://issues.apache.org/jira/browse/HIVE-22273)：删除临时目录时，访问检查失败 | 
| 逆向移植 | [HIVE-22270](https://issues.apache.org/jira/browse/HIVE-22270)：将 commons-io 升级到 2.6 | 
| 逆向移植 | [HIVE-22241](https://issues.apache.org/jira/browse/HIVE-22241)：实现 UDF 以 date/timestamp 使用其内部表示法和格里高利-朱利安混合日历进行解释 | 
| 逆向移植 | [HIVE-22241](https://issues.apache.org/jira/browse/HIVE-22241)：实现 UDF 以 date/timestamp 使用其内部表示法和 Gregorian-Julian 混合进行解释 | 
| 逆向移植 | [HIVE-22232](https://issues.apache.org/jira/browse/HIVE-22232)：当 hive.order.columnalignment 设置为 false 时，出现 NPE | 
| 逆向移植 | [HIVE-22231](https://issues.apache.org/jira/browse/HIVE-22231)：通过 knox 进行大量 hive 查询失败，并显示“Broken pipe Write failed（断开链接回写失败）” | 
| 逆向移植 | [HIVE-22221](https://issues.apache.org/jira/browse/HIVE-22221)：Llap 外部客户端——需要减少 \$1getSplits LlapBaseInputFormat | 
| 逆向移植 | [HIVE-22208](https://issues.apache.org/jira/browse/HIVE-22208)：当查询（包括在具有掩码列的表上的联接）被重写时，具有保留关键字的列名无法转义 | 
| 逆向移植 | [HIVE-22197](https://issues.apache.org/jira/browse/HIVE-22197)：Common Merge join 抛出类强制转换异常。 | 
| 逆向移植 | [HIVE-22170](https://issues.apache.org/jira/browse/HIVE-22170)：from\$1unixtime 和 unix\$1timestamp 会使用用户会话时区 | 
| 逆向移植 | [HIVE-22169](https://issues.apache.org/jira/browse/HIVE-22169)：Tez： SplitGenerator 正在尝试查找 Tez 不存在的计划文件 | 
| 逆向移植 | [HIVE-22168](https://issues.apache.org/jira/browse/HIVE-22168)：从 llap 缓存热路径中删除极为昂贵的日志记录 | 
| 逆向移植 | [HIVE-22161：UDF：在](https://issues.apache.org/jira/browse/HIVE-22161) org.apache.hadoop.hive.ql.udf 上 FunctionRegistry 同步。 UDFType 班级 | 
| 逆向移植 | [HIVE-22120](https://issues.apache.org/jira/browse/HIVE-22120)：修复特定边界条件下左外地图联接中的错误结果/ ArrayOutOfBound 异常 | 
| 逆向移植 | [HIVE-22115](https://issues.apache.org/jira/browse/HIVE-22115)：如果属性设置为 false，会阻止创建查询 routing appender | 
| 逆向移植 | [HIVE-22113](https://issues.apache.org/jira/browse/HIVE-22113)：在相关设备上 AMReporter防止 LLAP 关机 RuntimeException | 
| 逆向移植 | [HIVE-22106](https://issues.apache.org/jira/browse/HIVE-22106)：删除 partition-eval 的 cross-query 同步 | 
| 逆向移植 | [HIVE-22099](https://issues.apache.org/jira/browse/HIVE-22099)：自 HIVE-20007 以来，几个与日期相关的日期 UDFs 无法正确处理儒略日期 | 
| 逆向移植 | [HIVE-22037](https://issues.apache.org/jira/browse/HIVE-22037)：由于 OOM 而关闭时 HS2 应该会记录日志 | 
| 逆向移植 | [HIVE-21976](https://issues.apache.org/jira/browse/HIVE-21976)：方解石中的偏移量应为空而不是零 HiveSortLimit | 
| 逆向移植 | [HIVE-21924](https://issues.apache.org/jira/browse/HIVE-21924)：即使 header/footer 存在也要拆分文本文件 | 
| 逆向移植 | [HIVE-21913](https://issues.apache.org/jira/browse/HIVE-21913)：通用UDTFGet拆分应以与 LLAP 相同的方式处理用户名 | 
| 逆向移植 | [HIVE-21905](https://issues.apache.org/jira/browse/HIVE-21905)：泛型在课堂上的 FetchOperator 改进 | 
| 逆向移植 | [HIVE-21902](https://issues.apache.org/jira/browse/HIVE-21902)： HiveServer2 用户界面：需要码头响应标头 X-Frame-Options | 
| 逆向移植 | [HIVE-21888](https://issues.apache.org/jira/browse/HIVE-21888)：将 hive.parquet.timestamp.skip.conversion 默认设置为 true | 
| 逆向移植 | [HIVE-21868](https://issues.apache.org/jira/browse/HIVE-21868): 矢量化 CAST...FORMAT | 
| 逆向移植 | [HIVE-21864](https://issues.apache.org/jira/browse/HIVE-21864)： LlapBaseInputFormat\$1closeAll | 
| 逆向移植 | [HIVE-21863](https://issues.apache.org/jira/browse/HIVE-21863)：改进 WHEN 表达式的 Vectorizer 类型转换 | 
| 逆向移植 | [HIVE-21862](https://issues.apache.org/jira/browse/HIVE-21862)：ORC ppd 产生带有时间戳的错误结果 | 
| 逆向移植 | [HIVE-21846](https://issues.apache.org/jira/browse/HIVE-21846)：在 Tezam 中创建一个定期获取指标的话题 LlapDaemon  | 
| 逆向移植 | [HIVE-21837](https://issues.apache.org/jira/browse/HIVE-21837)： MapJoin 当所选列的值完全为空时会抛出异常 | 
| 逆向移植 | [HIVE-21834](https://issues.apache.org/jira/browse/HIVE-21834)：避免不必要的调用以简化筛选条件 | 
| 逆向移植 | [HIVE-21832](https://issues.apache.org/jira/browse/HIVE-21832)：用于获取平均queue/serving/response时间的新指标 | 
| 逆向移植 | [HIVE-21827](https://issues.apache.org/jira/browse/HIVE-21827)：多次调用 SemanticAnalyzer不通过 getTableObjectByName 方法 | 
| 逆向移植 | [HIVE-21822](https://issues.apache.org/jira/browse/HIVE-21822)：通过新的 API 方法公开 LlapDaemon 指标 | 
| 逆向移植 | [HIVE-21818](https://issues.apache.org/jira/browse/HIVE-21818)：国会预算办公室：复制 TableRelOptHiveTable有元数据仓流量 | 
| 逆向移植 | [HIVE-21815](https://issues.apache.org/jira/browse/HIVE-21815)：ORC 文件中的统计数据被解析两次 | 
| 逆向移植 | [HIVE-21805](https://issues.apache.org/jira/browse/HIVE-21805)： HiveServer2：使用快速 ShutdownHookManager APIs | 
| 逆向移植 | [HIVE-21799](https://issues.apache.org/jira/browse/HIVE-21799)： NullPointerException 在 DynamicPartitionPruningOptimization，当联接键位于聚合列上时 | 
| 逆向移植 | [HIVE-21794](https://issues.apache.org/jira/browse/HIVE-21794)：将物化视图参数添加到 sqlStdAuth SafeVarNameRegexes | 
| 逆向移植 | [HIVE-21768](https://issues.apache.org/jira/browse/HIVE-21768)：JDBC：删除没有括起来的 UNION 查询的默认联合前缀 | 
| 逆向移植 | [HIVE-21746](https://issues.apache.org/jira/browse/HIVE-21746)： ArrayIndexOutOfBoundsException在动态分区哈希联接期间，禁用 CBO | 
| 逆向移植 | [HIVE-21717](https://issues.apache.org/jira/browse/HIVE-21717)：移动任务中的目录重命名失败。 | 
| 逆向移植 | [HIVE-21685](https://issues.apache.org/jira/browse/HIVE-21685)：包含多个 IN 子句的查询出现简化错误 | 
| 逆向移植 | [HIVE-21681](https://issues.apache.org/jira/browse/HIVE-21681)：Describe formatted 显示了多个主键的错误信息 | 
| 逆向移植 | [HIVE-21651](https://issues.apache.org/jira/browse/HIVE-21651)：将 protobuf serde 移动到 hive-exec 中。 | 
| 逆向移植 | [HIVE-21619](https://issues.apache.org/jira/browse/HIVE-21619)：在 SQL 解释扩展中输出的时间戳类型缺乏精度 | 
| 逆向移植 | [HIVE-21592](https://issues.apache.org/jira/browse/HIVE-21592)： OptimizedSql 当表达式包含 CONCAT 时不显示 | 
| 逆向移植 | [HIVE-21576](https://issues.apache.org/jira/browse/HIVE-21576): 引入 CAST...FORMAT 和 SQL:2016 日期时间格式的限制列表 | 
| 逆向移植 | [HIVE-21573](https://issues.apache.org/jira/browse/HIVE-21573)：如果身份验证设置为 delegationToken，二进制传输会忽略主体 | 
| 逆向移植 | [HIVE-21550](https://issues.apache.org/jira/browse/HIVE-21550)： TestObjectStore 测试不稳定-无法在请求的时间内获得锁 | 
| 逆向移植 | [HIVE-21544](https://issues.apache.org/jira/browse/HIVE-21544)：在折叠过程中，持续传播会破坏coalesce/case/when表达式 | 
| 逆向移植 | [HIVE-21539](https://issues.apache.org/jira/browse/HIVE-21539)： GroupBy \$1 where 同一列上的子句会导致查询重写不正确 | 
| 逆向移植 | [HIVE-21538](https://issues.apache.org/jira/browse/HIVE-21538)：Beeline：尽管控制台读取器并未传递到连接参数，但会提供密码来源 | 
| 逆向移植 | [HIVE-21509](https://issues.apache.org/jira/browse/HIVE-21509)：LLAP 可能会缓存损坏的列向量并返回错误的查询结果 | 
| 逆向移植 | [HIVE-21499](https://issues.apache.org/jira/browse/HIVE-21499)：如果创建命令失败，则不应从注册表中删除该函数 AlreadyExistsException | 
| 逆向移植 | [HIVE-21496](https://issues.apache.org/jira/browse/HIVE-21496): 自动调整无序缓冲区大小可能会溢出 | 
| 逆向移植 | [HIVE-21468](https://issues.apache.org/jira/browse/HIVE-21468): JDBC 存储处理程序的标识符名称区分大小写 | 
| 逆向移植 | [HIVE-21467](https://issues.apache.org/jira/browse/HIVE-21467): 移除已弃用的 junit.framework.Assert 导入 | 
| 逆向移植 | [HIVE-21435](https://issues.apache.org/jira/browse/HIVE-21435)：在构建时 LlapBaseInputFormat 应该从 TASK\$1ATTEMPT\$1ID conf 中获取任务编号（如果有） SubmitWorkRequestProto | 
| 逆向移植 | [HIVE-21389](https://issues.apache.org/jira/browse/HIVE-21389)：HIVE-21247 后，Hive 分发缺少 javax.ws.rs-api.jar | 
| 逆向移植 | [HIVE-21385](https://issues.apache.org/jira/browse/HIVE-21385): 允许禁止向 JDBC 源下推不可拆分的计算 | 
| 逆向移植 | [HIVE-21383](https://issues.apache.org/jira/browse/HIVE-21383)：JDBC 存储处理程序：通过使用目录和架构检索表（如果已指定） | 
| 逆向移植 | [HIVE-21382](https://issues.apache.org/jira/browse/HIVE-21382): 按密钥减少优化分组 - 在 query23 中未减少密钥 | 
| 逆向移植 | [HIVE-21362](https://issues.apache.org/jira/browse/HIVE-21362)：添加输入格式和 serde 以从 protobuf 文件中读取。 | 
| 逆向移植 | [HIVE-21340](https://issues.apache.org/jira/browse/HIVE-21340)：CBO：修剪输入到 a 中的非键列 SemiJoin | 
| 逆向移植 | [HIVE-21332](https://issues.apache.org/jira/browse/HIVE-21332): 清除非锁定缓冲区，而不清除锁定的缓冲区 | 
| 逆向移植 | [HIVE-21329](https://issues.apache.org/jira/browse/HIVE-21329)：根据运算符管道，自定义 Tez 运行时无序输出缓冲区的大小 | 
| 逆向移植 | [HIVE-21295](https://issues.apache.org/jira/browse/HIVE-21295)： StorageHandler 应使用 Hive 惯例将日期转换为字符串 | 
| 逆向移植 | [HIVE-21294](https://issues.apache.org/jira/browse/HIVE-21294)：向量化：1-reducer Shuffle 可以跳过对象哈希函数 | 
| 逆向移植 | [HIVE-21255](https://issues.apache.org/jira/browse/HIVE-21255)：移 QueryConditionBuilder 入 JdbcStorageHandler | 
| 逆向移植 | [HIVE-21253](https://issues.apache.org/jira/browse/HIVE-21253)：JDBC DB2 中的 Support StorageHandler | 
| 逆向移植 | [HIVE-21232](https://issues.apache.org/jira/browse/HIVE-21232)：LLAP：添加友好的缓存未命中拆分关联提供程序 | 
| 逆向移植 | [HIVE-21214](https://issues.apache.org/jira/browse/HIVE-21214): MoveTask : 使用 AttempTid 代替文件大小对文件进行重复数据删除 compareTempOr DuplicateFiles | 
| 逆向移植 | [HIVE-21184](https://issues.apache.org/jira/browse/HIVE-21184): 添加解释内容并解释带有成本信息的格式化 CBO 计划 | 
| 逆向移植 | [HIVE-21182](https://issues.apache.org/jira/browse/HIVE-21182)：在计划期间跳过设置 hive scratch dir | 
| 逆向移植 | [HIVE-21171](https://issues.apache.org/jira/browse/HIVE-21171)：如果 RPC 处于启用状态，请跳过为 tez 创建暂存目录 | 
| 逆向移植 | [HIVE-21126](https://issues.apache.org/jira/browse/HIVE-21126)：允许在 LlapBaseInputFormat \$1getSplit 中进行会话级别的查询 | 
| 逆向移植 | [HIVE-21107](https://issues.apache.org/jira/browse/HIVE-21107)：动态分区哈希连接期间，出现“Cannot find field（无法找到字段）”错误 | 
| 逆向移植 | [HIVE-21061](https://issues.apache.org/jira/browse/HIVE-21061)： IllegalStateException 对于空源，CTAS 查询失败 | 
| 逆向移植 | [HIVE-21041](https://issues.apache.org/jira/browse/HIVE-21041)：NPE， ParseException 在从逻辑计划中获取架构时 | 
| 逆向移植 | [HIVE-21013](https://issues.apache.org/jira/browse/HIVE-21013)： JdbcStorageHandler 无法在 Oracle 中找到分区列 | 
| 逆向移植 | [HIVE-21006](https://issues.apache.org/jira/browse/HIVE-21006)：扩展 SharedWorkOptimizer 以在有重复利用机会时移除半联接 | 
| 逆向移植 | [HIVE-20992](https://issues.apache.org/jira/browse/HIVE-20992)：将配置 hive.metastore.dbaccess.ssl.properties 拆分为更有意义的配置 | 
| 逆向移植 | [HIVE-20989](https://issues.apache.org/jira/browse/HIVE-20989)：JDBC- GetOperationStatus \$1 日志可以通过睡眠阻止查询进度 | 
| 逆向移植 | [HIVE-20988](https://issues.apache.org/jira/browse/HIVE-20988)：在多列上使用主键进行 group by 查询时，结果错误 | 
| 逆向移植 | [HIVE-20985](https://issues.apache.org/jira/browse/HIVE-20985)：如果选择运算符输入是临时列，向量化可能会复用其中一部分作为输出 | 
| 逆向移植 | [HIVE-20978](https://issues.apache.org/jira/browse/HIVE-20978)：“hive.jdbc.\$1” 应该添加到 sqlStdAuth SafeVarNameRegexes | 
| 逆向移植 | [HIVE-20953](https://issues.apache.org/jira/browse/HIVE-20953)：如果在创建函数时无法将其添加到元存储，则将其从函数注册表中删除。 | 
| 逆向移植 | [HIVE-20952](https://issues.apache.org/jira/browse/HIVE-20952)：清理 VectorizationContext .java | 
| 逆向移植 | [HIVE-20951](https://issues.apache.org/jira/browse/HIVE-20951)：LLAP：始终将 Xms 设置为 50% | 
| 逆向移植 | [HIVE-20949](https://issues.apache.org/jira/browse/HIVE-20949)：改进物理计划中的 PKFK 基数估算 | 
| 逆向移植 | [HIVE-20944](https://issues.apache.org/jira/browse/HIVE-20944)：查询编译期间不验证统计数据 | 
| 逆向移植 | [HIVE-20940](https://issues.apache.org/jira/browse/HIVE-20940): 桥接 Calcite 类型解析比 Hive 更严格的案例。 | 
| 逆向移植 | [HIVE-20937](https://issues.apache.org/jira/browse/HIVE-20937)：Postgres jdbc 查询失败，并显示“LIMIT must not be negative（LIMIT 不得为负数）” | 
| 逆向移植 | [HIVE-20926](https://issues.apache.org/jira/browse/HIVE-20926)：当 bloom 筛选条件条目较高或没有统计数据时，半联接减少提示失败 | 
| 逆向移植 | [HIVE-20920](https://issues.apache.org/jira/browse/HIVE-20920)：使用 SQL 约束来改进连接重新排序算法 | 
| 逆向移植 | [HIVE-20918](https://issues.apache.org/jira/browse/HIVE-20918)：将计算从方解石 enable/disable 推送到 JDBC 连接的标志 | 
| 逆向移植 | [HIVE-20915](https://issues.apache.org/jira/browse/HIVE-20915): 为 HoS 和 MR 提供动态排序分区优化 | 
| 逆向移植 | [HIVE-20910](https://issues.apache.org/jira/browse/HIVE-20910)：由于动态分区排序优化，在分桶表中插入失败 | 
| 逆向移植 | [HIVE-20899](https://issues.apache.org/jira/browse/HIVE-20899)：LLAP YARN 服务的 Keytab URI 仅限于支持 HDFS | 
| 逆向移植 | [HIVE-20898](https://issues.apache.org/jira/browse/HIVE-20898)：对于时间相关函数，参数不会转换为非空型 | 
| 逆向移植 | [HIVE-20881](https://issues.apache.org/jira/browse/HIVE-20881)：常量传播导致投影过度简化 | 
| 逆向移植 | [HIVE-20880](https://issues.apache.org/jira/browse/HIVE-20880)：更新 hive.stats.filter.in.min.ratio 的默认值 | 
| 逆向移植 | [HIVE-20873](https://issues.apache.org/jira/browse/HIVE-20873)：使用 Murmur 哈希 VectorHashKeyWrapperTwoLong 来减少哈希碰撞 | 
| 逆向移植 | [HIVE-20868](https://issues.apache.org/jira/browse/HIVE-20868)：当 TezDummyOperator 有子操作时，SMB 加入会间歇性失败 getFinalOp MapRecordProcessor | 
| 逆向移植 | [HIVE-20853：在](https://issues.apache.org/jira/browse/HIVE-20853) llap 守护程序 API 中公开 ShuffleHandler .registerDAG | 
| 逆向移植 | [HIVE-20850](https://issues.apache.org/jira/browse/HIVE-20850): 如果可能，将案例条件从投影推送到维度表 | 
| 逆向移植 | [HIVE-20842](https://issues.apache.org/jira/browse/HIVE-20842)：修复 HIVE-20660 中引入的逻辑，以估算 group by 的统计数据 | 
| 逆向移植 | [HIVE-20839](https://issues.apache.org/jira/browse/HIVE-20839)：动态分区哈希连接期间，出现“Cannot find field（无法找到字段）”错误 | 
| 逆向移植 | [HIVE-20835](https://issues.apache.org/jira/browse/HIVE-20835): 约束与 MV 重写之间的交互可能会在 Calcite 计划程序中创建循环 | 
| 逆向移植 | [HIVE-20834](https://issues.apache.org/jira/browse/HIVE-20834)：保留 SemanticAnalyzer 来自缓存查询的引用的 Hive QueryResultCache 条目 | 
| 逆向移植 | [HIVE-20830](https://issues.apache.org/jira/browse/HIVE-20830)：在某些情况下， JdbcStorageHandler 范围查询断言失败 | 
| 逆向移植 | [HIVE-20829](https://issues.apache.org/jira/browse/HIVE-20829)： JdbcStorageHandler 射程分割投掷 NPE | 
| 逆向移植 | [HIVE-20827](https://issues.apache.org/jira/browse/HIVE-20827)：空数组的结果不一致 | 
| 逆向移植 | [HIVE-20826](https://issues.apache.org/jira/browse/HIVE-20826)：增强 HiveSemiJoin 规则，将左侧的 join \$1 group 转换为 Left Semi Join | 
| 逆向移植 | [HIVE-20821](https://issues.apache.org/jira/browse/HIVE-20821)：重写 SUM0 为 SUM \$1 COALESCE 组合 | 
| 逆向移植 | [HIVE-20815](https://issues.apache.org/jira/browse/HIVE-20815)： JdbcRecordReader.next 不能吃异常 | 
| 逆向移植 | [HIVE-20813](https://issues.apache.org/jira/browse/HIVE-20813)：udf to\$1epoch\$1milli 也需要支持无时区的时间戳。 | 
| 逆向移植 | [HIVE-20804](https://issues.apache.org/jira/browse/HIVE-20804)：通过约束实现 group by 深度优化 | 
| 逆向移植 | [HIVE-20792](https://issues.apache.org/jira/browse/HIVE-20792)：插入带区域的时间戳会截断数据 | 
| 逆向移植 | [HIVE-20788](https://issues.apache.org/jira/browse/HIVE-20788)：创建筛选条件时，扩展的 SJ 缩减可能导致列错误回溯 | 
| 逆向移植 | [HIVE-20778](https://issues.apache.org/jira/browse/HIVE-20778): 如果计划中的所有联接都是通过去相关逻辑创建的，则可能无法触发联接重新排序 | 
| 逆向移植 | [HIVE-20772](https://issues.apache.org/jira/browse/HIVE-20772)：在 LLAP 中记录每个任务的 CPU 计数器 | 
| 逆向移植 | [HIVE-20768](https://issues.apache.org/jira/browse/HIVE-20768)：添加滚动窗口 UDF | 
| 逆向移植 | [HIVE-20767](https://issues.apache.org/jira/browse/HIVE-20767)：连接运算符之间的多个项目可能会对使用约束的连接重新排序造成影响 | 
| 逆向移植 | [HIVE-20762](https://issues.apache.org/jira/browse/HIVE-20762)：NOTIFICATION\$1LOG 清理间隔会被硬编码为 60s，间隔过小 | 
| 逆向移植 | [HIVE-20761](https://issues.apache.org/jira/browse/HIVE-20761)：选择对 notification\$1sequence 表进行更新具有重试时间间隔，且重试计数过小 | 
| 逆向移植 | [HIVE-20751](https://issues.apache.org/jira/browse/HIVE-20751)：将 arrow 版本升级到 0.10.0 | 
| 逆向移植 | [HIVE-20746](https://issues.apache.org/jira/browse/HIVE-20746)： HiveProtoHookLogger 不在一天结束时关闭文件。 | 
| 逆向移植 | [HIVE-20744](https://issues.apache.org/jira/browse/HIVE-20744)：使用 SQL 约束来改进连接重新排序算法 | 
| 逆向移植 | [HIVE-20740](https://issues.apache.org/jira/browse/HIVE-20740)：移除 ObjectStore .setConf 方法中的全局锁。此 cherrypick 会将适用于 Hive 3.2 和 4.x 的 HIVE-20740 反向移植到 3.1.x | 
| 逆向移植 | [HIVE-20734](https://issues.apache.org/jira/browse/HIVE-20734)：Beeline：当 beeline-site.xml 为且 Hive CLI 重定向到 beeline 时，它应该使用系统 username/dummy 密码而不是提示输入密码 | 
| 逆向移植 | [HIVE-20731](https://issues.apache.org/jira/browse/HIVE-20731)： JdbcStorageHandler应授权中的密钥库文件 | 
| 逆向移植 | [HIVE-20720](https://issues.apache.org/jira/browse/HIVE-20720)：将分区列选项添加到 JDBC 处理程序 | 
| 逆向移植 | [HIVE-20719](https://issues.apache.org/jira/browse/HIVE-20719): 在 hive.optimize.sort.dynamic.partition 优化和向量化开启的情况下，SELECT 语句在 UPDATE 后失败 | 
| 逆向移植 | [HIVE-20718](https://issues.apache.org/jira/browse/HIVE-20718): 添加带有约束条件的 perf cli 驱动程序 | 
| 逆向移植 | [HIVE-20716](https://issues.apache.org/jira/browse/HIVE-20716)：将 hive.cbo.stats.correlated.multi.key.joins 的默认值设置为 true | 
| 逆向移植 | [HIVE-20712](https://issues.apache.org/jira/browse/HIVE-20712)： HivePointLookupOptimizer 应该提取深层案例 | 
| 逆向移植 | [HIVE-20710](https://issues.apache.org/jira/browse/HIVE-20710)：常量折叠可能不会创建没有类型的 null 常量 | 
| 逆向移植 | [HIVE-20706](https://issues.apache.org/jira/browse/HIVE-20706): external\$1jdbc\$1table2.q 间歇性失败 | 
| 逆向移植 | [HIVE-20704](https://issues.apache.org/jira/browse/HIVE-20704)：扩展 HivePreFilteringRule 以支持其他功能 | 
| 逆向移植 | [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703)：将动态排序分区优化置于基于成本的决策之下 | 
| 逆向移植 | [HIVE-20702](https://issues.apache.org/jira/browse/HIVE-20702)：在 mapjoin 选择期间，考虑数据结构感知估算的负载 | 
| 逆向移植 | [HIVE-20692](https://issues.apache.org/jira/browse/HIVE-20692)：启用 NOT x IS (NOT) [TRUE\$1FALSE] 表达式的折叠 | 
| 逆向移植 | [HIVE-20691](https://issues.apache.org/jira/browse/HIVE-20691)：修复 org.apache.hadoop.hive.cli。 TestMiniLlapCliDriver。 testCliDriver[cttl] | 
| 逆向移植 | [HIVE-20682](https://issues.apache.org/jira/browse/HIVE-20682)：如果主线程关闭了共享 sessionHive，则异步查询执行可能会失败 | 
| 逆向移植 | [HIVE-20676](https://issues.apache.org/jira/browse/HIVE-20676)： HiveServer2： PrivilegeSynchronizer未设置为守护程序状态 | 
| 逆向移植 | [HIVE-20660](https://issues.apache.org/jira/browse/HIVE-20660)：可通过将总行数绑定到源表，改进 group by 统计数据估算 | 
| 逆向移植 | [HIVE-20652](https://issues.apache.org/jira/browse/HIVE-20652)： JdbcStorageHandler 将两个不同数据源的加入推送到 jdbc 驱动程序 | 
| 逆向移植 | [HIVE-20651](https://issues.apache.org/jira/browse/HIVE-20651)：应该对 JdbcStorageHandler 密码进行加密 | 
| 逆向移植 | [HIVE-20649](https://issues.apache.org/jira/browse/HIVE-20649)：LLAP 感知内存管理器可用于 Orc 写入器 | 
| 逆向移植 | [HIVE-20648](https://issues.apache.org/jira/browse/HIVE-20648)：LLAP：按运算符的向量组会使用每个执行程序的内存 | 
| 逆向移植 | [HIVE-20646](https://issues.apache.org/jira/browse/HIVE-20646)：如果分区筛选条件具有 IS NOT NULL，则不会下推到元存储查询 | 
| 逆向移植 | [HIVE-20644](https://issues.apache.org/jira/browse/HIVE-20644)：避免经由 Hive Runtime 异常泄露敏感信息 | 
| 逆向移植 | [HIVE-20636](https://issues.apache.org/jira/browse/HIVE-20636)：对外部连接后的 null 值估算数目进行改进 | 
| 逆向移植 | [HIVE-20632](https://issues.apache.org/jira/browse/HIVE-20632)：如果在查询表上创建具体化视图，则使用 get\$1splits UDF 查询会失败 | 
| 逆向移植 | [HIVE-20627](https://issues.apache.org/jira/browse/HIVE-20627)：并发异步查询间歇性失败 LockException 并导致内存泄漏 | 
| 逆向移植 | [HIVE-20623](https://issues.apache.org/jira/browse/HIVE-20623)：共享工作：扩展 LLAP 中 map-join 缓存条目的共享 | 
| 逆向移植 | [HIVE-20619](https://issues.apache.org/jira/browse/HIVE-20619)：默认情况下包含 MultiDelimitSerDe 在 HiveServer 2 中 | 
| 逆向移植 | [HIVE-20618](https://issues.apache.org/jira/browse/HIVE-20618)：在联接选择期间， BucketMapJoin可以为非存储桶表选择此选项 | 
| 逆向移植 | [HIVE-20617](https://issues.apache.org/jira/browse/HIVE-20617)：修复 IN 表达式中的常量类型，使其具有正确类型 | 
| 逆向移植 | [HIVE-20612](https://issues.apache.org/jira/browse/HIVE-20612): 为 CBO 创建新的联接多密钥关联标记 | 
| 逆向移植 | [HIVE-20603](https://issues.apache.org/jira/browse/HIVE-20603)：更改表位置文件系统后，插入分区时出现“Wrong FS（FS 错误）”错误 | 
| 逆向移植 | [HIVE-20601](https://issues.apache.org/jira/browse/HIVE-20601)：在 ALTER\$1PARTITION 事件中 EnvironmentContext 为空 DbNotificationListener | 
| 逆向移植 | [HIVE-20583](https://issues.apache.org/jira/browse/HIVE-20583)：仅对中的 kerberos 身份验证使用规范主机名 HiveConnection | 
| 逆向移植 | [HIVE-20582](https://issues.apache.org/jira/browse/HIVE-20582)：hive proto 日志记录中的 hflush 可配置 | 
| 逆向移植 | [HIVE-20563](https://issues.apache.org/jira/browse/HIVE-20563)：矢量化：当 THEN/ELSE 类型和结果类型不同时，表达式失败的情况 | 
| 逆向移植 | [HIVE-20558](https://issues.apache.org/jira/browse/HIVE-20558)：将 hive.hashtable.key.count.adjustment 的默认值更改为 0.99 | 
| 逆向移植 | [HIVE-20552](https://issues.apache.org/jira/browse/HIVE-20552)： LogicalPlan更快地从中获取架构 | 
| 逆向移植 | [HIVE-20550](https://issues.apache.org/jira/browse/HIVE-20550)：切换 Web HCat 以使用 beeline 提交 Hive 查询 | 
| 逆向移植 | [HIVE-20537](https://issues.apache.org/jira/browse/HIVE-20537)：使用与 CBO 和 Hive 中不同的不相关列，进行多列连接估算 | 
| 逆向移植 | [HIVE-20524](https://issues.apache.org/jira/browse/HIVE-20524)：在从 Hive 版本 2 升级到版本 3 以从 ALTER TABLE VARCHAR 转到 DECIMAL 的过程中，架构发展检查中断 | 
| 逆向移植 | [HIVE-20522](https://issues.apache.org/jira/browse/HIVE-20522)：由于字段可为空， HiveFilterSetOpTransposeRule 可能会引发断言错误 | 
| 逆向移植 | [HIVE-20521](https://issues.apache.org/jira/browse/HIVE-20521)： HS2 doas=True 在 hadoop.tmp.dir、MR 和 S3A 文件系统中存在权限问题 | 
| 逆向移植 | [HIVE-20515](https://issues.apache.org/jira/browse/HIVE-20515)：使用不同文件系统中的结果缓存、查询临时目录和结果缓存目录时，查询结果为空 | 
| 逆向移植 | [HIVE-20508](https://issues.apache.org/jira/browse/HIVE-20508)：Hive 不支持“user@realm”类型的用户名 | 
| 逆向移植 | [HIVE-20507](https://issues.apache.org/jira/browse/HIVE-20507)：Beeline：添加实用程序命令以从 beeline-site.xml 中检索所有 uri | 
| 逆向移植 | [HIVE-20505](https://issues.apache.org/jira/browse/HIVE-20505)：将 org.openjdk.jmh:jmh-core 升级到 1.21 | 
| 逆向移植 | [HIVE-20503](https://issues.apache.org/jira/browse/HIVE-20503)：在 mapjoin 选择期间，使用数据结构感知估算 | 
| 逆向移植 | [HIVE-20498](https://issues.apache.org/jira/browse/HIVE-20498)：支持列统计数据自动收集的日期类型 | 
| 逆向移植 | [HIVE-20496](https://issues.apache.org/jira/browse/HIVE-20496)：矢量化：矢量化 PTF IllegalStateException | 
| 逆向移植 | [HIVE-20494](https://issues.apache.org/jira/browse/HIVE-20494)：泛型UDFRestrictInformationSchema在 HIVE-19440 之后就坏了 | 
| 逆向移植 | [HIVE-20477](https://issues.apache.org/jira/browse/HIVE-20477)： OptimizedSql 如果表达式包含，则不显示 INs | 
| 逆向移植 | [HIVE-20467](https://issues.apache.org/jira/browse/HIVE-20467)：资源计划创建/删除中如果不 EXISTS/IF 存在则允许 | 
| 逆向移植 | [HIVE-20462](https://issues.apache.org/jira/browse/HIVE-20462)：如果视图已存在，则“CREATE VIEW IF NOT EXISTS（如不存在则创建视图）”失败 | 
| 逆向移植 | [HIVE-20455](https://issues.apache.org/jira/browse/HIVE-20455)：来自安全授权的日志泄露。 PrivilegeSynchonizer.run | 
| 逆向移植 | [HIVE-20439](https://issues.apache.org/jira/browse/HIVE-20439)：在 llap 的连接选择期间，限制膨胀内存 | 
| 逆向移植 | [HIVE-20433](https://issues.apache.org/jira/browse/HIVE-20433)：字符串隐式转换为时间戳过慢 | 
| 逆向移植 | [HIVE-20432](https://issues.apache.org/jira/browse/HIVE-20432)：将 BETWEEN 重写为 IN，以便统计估算的整数类型 | 
| 逆向移植 | [HIVE-20423](https://issues.apache.org/jira/browse/HIVE-20423): 将 NULLS LAST 设置为默认空顺序 | 
| 逆向移植 | [HIVE-20418](https://issues.apache.org/jira/browse/HIVE-20418)：如果查询未选择列，LLAP IO 可能无法处理正确禁用行索引的 ORC 文件 | 
| 逆向移植 | [HIVE-20412](https://issues.apache.org/jira/browse/HIVE-20412)：NPE 进来了 HiveMetaHook | 
| 逆向移植 | [HIVE-20406](https://issues.apache.org/jira/browse/HIVE-20406)：Nested Coalesce 给出错误结果 | 
| 逆向移植 | [HIVE-20399](https://issues.apache.org/jira/browse/HIVE-20399)：对于 MM 表，未完全限定的 CTAS w/a 自定义表位置失败 | 
| 逆向移植 | [HIVE-20393](https://issues.apache.org/jira/browse/HIVE-20393)：减少半联接： markSemiJoinFordPP 的行为不一致 | 
| 逆向移植 | [HIVE-20391](https://issues.apache.org/jira/browse/HIVE-20391)：分解 HiveAggregateReduceFunctionsRule聚合函数时可能会推断出错误的返回类型 | 
| 逆向移植 | [HIVE-20383](https://issues.apache.org/jira/browse/HIVE-20383)：hive proto 事件挂钩出现无效队列名称和同步问题。 | 
| 逆向移植 | [HIVE-20367](https://issues.apache.org/jira/browse/HIVE-20367)：向量化：支持 PTF AVG、MAX、MIN、SUM 进行流式传输 | 
| 逆向移植 | [HIVE-20366](https://issues.apache.org/jira/browse/HIVE-20366): 因为筛选条件为空，TPC-DS query78 统计数据估计值已关闭 | 
| 逆向移植 | [HIVE-20364](https://issues.apache.org/jira/browse/HIVE-20364)：更新 hive.map.aggr.hash.min.reduction 的默认值 | 
| 逆向移植 | [HIVE-20352](https://issues.apache.org/jira/browse/HIVE-20352)：向量化：支持分组功能 | 
| 逆向移植 | [HIVE-20347](https://issues.apache.org/jira/browse/HIVE-20347): hive.optimize.sort.dynamic.partition 应该适用于分区的 CTAS 和 MV | 
| 逆向移植 | [HIVE-20345](https://issues.apache.org/jira/browse/HIVE-20345)：如果从不同的调用中删除表，则删除数据库可能会挂起 | 
| 逆向移植 | [HIVE-20343](https://issues.apache.org/jira/browse/HIVE-20343): Hive 3：CTAS 未以 transactional\$1properties 为准 | 
| 逆向移植 | [HIVE-20340](https://issues.apache.org/jira/browse/HIVE-20340)：当使用时间戳函数的输出作为字符串时，德鲁伊需要 CASTs 从时间戳到字符串的显式 | 
| 逆向移植 | [HIVE-20339](https://issues.apache.org/jira/browse/HIVE-20339)：向量化：取消不需要的限制导致某些 RANK 和 PTF 无法向量化 | 
| 逆向移植 | [HIVE-20337](https://issues.apache.org/jira/browse/HIVE-20337): CachedStore: getPartitionsBy Expr 未正确填充分区列表 | 
| 逆向移植 | [HIVE-20336](https://issues.apache.org/jira/browse/HIVE-20336)：屏蔽和筛选具体化视图的策略 | 
| 逆向移植 | [HIVE-20326](https://issues.apache.org/jira/browse/HIVE-20326)：创建约束时，将 RELY 作为默认值而不是 NO RELY | 
| 逆向移植 | [HIVE-20321](https://issues.apache.org/jira/browse/HIVE-20321)：矢量化：将 1 列的内存大小缩小到 <1 VectorHashKeyWrapper CacheLine | 
| 逆向移植 | [HIVE-20320](https://issues.apache.org/jira/browse/HIVE-20320): 开启 hive.optimize.remove.sq\$1count\$1check 标记 | 
| 逆向移植 | [HIVE-20315](https://issues.apache.org/jira/browse/HIVE-20315)：向量化：修复更多的 NULL/错误结果问题，并避免不必要的强制转换/转换 | 
| 逆向移植 | [HIVE-20314](https://issues.apache.org/jira/browse/HIVE-20314)：具体化视图重写包括分区修剪 | 
| 逆向移植 | [HIVE-20312](https://issues.apache.org/jira/browse/HIVE-20312)：允许 arrow 客户端使用自己的 BufferAllocator 箭头客户端 LlapOutputFormatService | 
| 逆向移植 | [HIVE-20302](https://issues.apache.org/jira/browse/HIVE-20302)：LLAP：IO 中的非向量化执行忽略了 ROW\$1\$1ID 等虚拟列 | 
| 逆向移植 | [HIVE-20300](https://issues.apache.org/jira/browse/HIVE-20300)： VectorFileSinkArrowOperator | 
| 逆向移植 | [HIVE-20299](https://issues.apache.org/jira/browse/HIVE-20299)：LLAP 签名者单元测试中存在潜在争用 | 
| 逆向移植 | [HIVE-20296](https://issues.apache.org/jira/browse/HIVE-20296)：改进后 HivePointLookupOptimizerRule 能够从更复杂的上下文中提取内容 | 
| 逆向移植 | [HIVE-20294](https://issues.apache.org/jira/browse/HIVE-20294)：向量化：修复 COALESCE / ELT 中的 NULL/错误结果问题 | 
| 逆向移植 | [HIVE-20292](https://issues.apache.org/jira/browse/HIVE-20292): 已定义主要约束的 tpcds query93 中的联接排序出错 | 
| 逆向移植 | [HIVE-20290](https://issues.apache.org/jira/browse/HIVE-20290)：延迟初始化 ArrowColumnarBatchSerDe ，因此它不会在此期间分配缓冲区 GetSplits | 
| 逆向移植 | [HIVE-20281](https://issues.apache.org/jira/browse/HIVE-20281)： SharedWorkOptimizer 失败并显示 “操作员缓存内容和实际计划不同” | 
| 逆向移植 | [HIVE-20277](https://issues.apache.org/jira/browse/HIVE-20277)：向量化：FILTER 不支持 case 表达式返回布尔值 | 
| 逆向移植 | [HIVE-20267](https://issues.apache.org/jira/browse/HIVE-20267)：扩展 WebUI 以包含表单，便于动态配置日志级别 | 
| 逆向移植 | [HIVE-20263](https://issues.apache.org/jira/browse/HIVE-20263)：变量中有 HiveReduceExpressionsWithStatsRule 错字 | 
| 逆向移植 | [HIVE-20260](https://issues.apache.org/jira/browse/HIVE-20260)：如果另一列的筛选条件更改行数，不会扩展列的 NDV | 
| 逆向移植 | [HIVE-20252](https://issues.apache.org/jira/browse/HIVE-20252)：Semijoin Reduction：如果小表端在上游有映射联接，则可能无法检测到半连接分支引起的循环。 | 
| 逆向移植 | [HIVE-20245](https://issues.apache.org/jira/browse/HIVE-20245)：向量化：修复 BETWEEN/IN 中的 NULL/错误结果问题 | 
| 逆向移植 | [HIVE-20241](https://issues.apache.org/jira/browse/HIVE-20241): 支持 CTAS 语句中的分区规范 | 
| 逆向移植 | [HIVE-20240](https://issues.apache.org/jira/browse/HIVE-20240): Semijoin Reduction：使用本地变量检查外部表的条件 | 
| 逆向移植 | [HIVE-20226](https://issues.apache.org/jira/browse/HIVE-20226)：当请求的 maxEvents 超过表的 max\$1rows 时，HMS getNextNotification 将抛出异常 | 
| 逆向移植 | [HIVE-20225](https://issues.apache.org/jira/browse/HIVE-20225)： SerDe 支持 Teradata 二进制格式 | 
| 逆向移植 | [HIVE-20213](https://issues.apache.org/jira/browse/HIVE-20213): 将 Calcite 升级到 1.17.0 | 
| 逆向移植 | [HIVE-20212](https://issues.apache.org/jira/browse/HIVE-20212)：http 模式下的 Hiveserver2 错误地发出指标 default.General.open\$1connections | 
| 逆向移植 | [HIVE-20210](https://issues.apache.org/jira/browse/HIVE-20210)：当对非分区列进行筛选并且转换量最小 MapReduce 时，Simple Fetch 优化器应该会导致 | 
| 逆向移植 | [HIVE-20209](https://issues.apache.org/jira/browse/HIVE-20209): 首次尝试在 repl 转储中连接元存储失败 | 
| 逆向移植 | [HIVE-20207](https://issues.apache.org/jira/browse/HIVE-20207)：向量化：修复 Filter/Compare 中的 NULL/错误结果问题 | 
| 逆向移植 | [HIVE-20204](https://issues.apache.org/jira/browse/HIVE-20204)：IN 期间进行类型转换 | 
| 逆向移植 | [HIVE-20203：A](https://issues.apache.org/jira/browse/HIVE-20203) rrow SerDe 泄露了 DirectByteBuffer | 
| 逆向移植 | [HIVE-20197](https://issues.apache.org/jira/browse/HIVE-20197)：矢量化：添加 DECIMAL\$164 测试，添加Date/Interval/Timestamp算术，然后添加更多按聚合分组 | 
| 逆向移植 | [HIVE-20193](https://issues.apache.org/jira/browse/HIVE-20193): cboInfo 不在解释计划 json 中 | 
| 逆向移植 | [HIVE-20192](https://issues.apache.org/jira/browse/HIVE-20192)：嵌入 HS2 式元数据仓正在泄漏管理 JDOPersistence器对象 | 
| 逆向移植 | [HIVE-20183](https://issues.apache.org/jira/browse/HIVE-20183)：如果源表包含空存储桶，则从分桶表插入可能导致数据丢失 | 
| 逆向移植 | [HIVE-20177](https://issues.apache.org/jira/browse/HIVE-20177)：矢量化：减少直播模式 KeyWrapper下的 GroupBy 分配 | 
| 逆向移植 | [HIVE-20174](https://issues.apache.org/jira/browse/HIVE-20174): 矢量化：修复 GROUPBY 聚合函数中的 NULLLLL/错误结果问题 | 
| 逆向移植 | [HIVE-20172](https://issues.apache.org/jira/browse/HIVE-20172)：尝试连接到远程元数据仓时因 GSS 异常而 StatsUpdater 失败 | 
| 逆向移植 | [HIVE-20153](https://issues.apache.org/jira/browse/HIVE-20153): Count 和 Sum UDF 在 Hive 2\$1 中消耗更多内存 | 
| 逆向移植 | [HIVE-20152](https://issues.apache.org/jira/browse/HIVE-20152)：如果 repl 转储失败，重置数据库状态可以重命名表 | 
| 逆向移植 | [HIVE-20149](https://issues.apache.org/jira/browse/HIVE-20149)： TestHiveCli 失败/超时 | 
| 逆向移植 | [HIVE-20130](https://issues.apache.org/jira/browse/HIVE-20130)：实现更好的信息架构同步器日志记录 | 
| 逆向移植 | [HIVE-20129](https://issues.apache.org/jira/browse/HIVE-20129)：恢复到 orc 表的基于位置的架构发展 | 
| 逆向移植 | [HIVE-20118](https://issues.apache.org/jira/browse/HIVE-20118)： SessionStateUserAuthenticator。 getGroupNames | 
| 逆向移植 | [HIVE-20116](https://issues.apache.org/jira/browse/HIVE-20116)： TezTask 正在使用父记录器 | 
| 逆向移植 | [HIVE-20115](https://issues.apache.org/jira/browse/HIVE-20115): ACID 表不应使用页脚扫描进行分析 | 
| 逆向移植 | [HIVE-20103](https://issues.apache.org/jira/browse/HIVE-20103)：WM：如果至少使用了一个，则仅有 Aggregate DAG 计数器 | 
| 逆向移植 | [HIVE-20101](https://issues.apache.org/jira/browse/HIVE-20101)：BloomKFilter：避免完全使用本地字节 [] 数组 | 
| 逆向移植 | [HIVE-20100](https://issues.apache.org/jira/browse/HIVE-20100): OpTraits : 当检测到不匹配时，选择 Optraits 应该停止 | 
| 逆向移植 | [HIVE-20098](https://issues.apache.org/jira/browse/HIVE-20098)：统计数据：获取日期列分区统计信息时，出现 NPE | 
| 逆向移植 | [HIVE-20095](https://issues.apache.org/jira/browse/HIVE-20095)：修复将计算推送到 jdbc 外部表的功能 | 
| 逆向移植 | [HIVE-20093](https://issues.apache.org/jira/browse/HIVE-20093): LlapOutputFomatService: ArrowBuf 与 Netty 一起使用进行会计 | 
| 逆向移植 | [HIVE-20090](https://issues.apache.org/jira/browse/HIVE-20090)：对 semijoin reduction 筛选条件创建进行扩展，以便发现新机会 | 
| 逆向移植 | [HIVE-20088](https://issues.apache.org/jira/browse/HIVE-20088)：Beeline 配置位置路径组装不正确 | 
| 逆向移植 | [HIVE-20082](https://issues.apache.org/jira/browse/HIVE-20082)： HiveDecimal 转换为字符串的转换无法正确格式化十进制 | 
| 逆向移植 | [HIVE-20069](https://issues.apache.org/jira/browse/HIVE-20069)：在 DPP 和 Semijoin 优化的情况下，修复重优化 | 
| 逆向移植 | [HIVE-20051](https://issues.apache.org/jira/browse/HIVE-20051)：跳过对临时表的授权 | 
| 逆向移植 | [HIVE-20044](https://issues.apache.org/jira/browse/HIVE-20044)：Arrow Serde 会填充字符值并正确处理空字符串 | 
| 逆向移植 | [HIVE-20028](https://issues.apache.org/jira/browse/HIVE-20028)：元存储客户端缓存配置使用不正确 | 
| 逆向移植 | [HIVE-20025](https://issues.apache.org/jira/browse/HIVE-20025)：清理由创建的事件文件 HiveProtoLoggingHook | 
| 逆向移植 | [HIVE-20020](https://issues.apache.org/jira/browse/HIVE-20020): Hive contrib jar 不应该在 lib 中 | 
| 逆向移植 | [HIVE-20013](https://issues.apache.org/jira/browse/HIVE-20013): 为 to\$1date 函数添加隐式日期类型转换 | 
| 逆向移植 | [HIVE-20011](https://issues.apache.org/jira/browse/HIVE-20011)：从 proto 日志记录挂钩中的追加模式迁移 | 
| 逆向移植 | [HIVE-20005](https://issues.apache.org/jira/browse/HIVE-20005): acid\$1table\$1stats、acid\$1no\$1buckets 等 - 分支的查询结果变更 | 
| 逆向移植 | [HIVE-20004](https://issues.apache.org/jira/browse/HIVE-20004)： ConvertDecimal64 使用错误的比例会ToDecimal 导致结果不正确 | 
| 逆向移植 | [HIVE-19995](https://issues.apache.org/jira/browse/HIVE-19995): ACID 表的聚合行流量 | 
| 逆向移植 | [HIVE-19993](https://issues.apache.org/jira/browse/HIVE-19993)：无法使用同样显示为列名的表别名 | 
| 逆向移植 | [HIVE-19992](https://issues.apache.org/jira/browse/HIVE-19992)：矢量化：HIVE-19951 的后续内容--> 添加调用到。 SchemaEvolution isOnlyImplicit仅当数据类型转换不是隐式时，才会转换 I/O 为 ORC 禁用已编码 LLAP | 
| 逆向移植 | [HIVE-19989](https://issues.apache.org/jira/browse/HIVE-19989)：Metastore 使用错误的应用程序名称作为指标 HADOOP2  | 
| 逆向移植 | [HIVE-19981](https://issues.apache.org/jira/browse/HIVE-19981)： HiveStrictManagedMigration 应用工具转换为外部表的托管表应设置为在删除表时删除数据 | 
| 逆向移植 | [HIVE-19967](https://issues.apache.org/jira/browse/HIVE-19967)：SMB 加入：需要 Optraits for PTFOperator ala GBY Op | 
| 逆向移植 | [HIVE-19935](https://issues.apache.org/jira/browse/HIVE-19935)：Hive WM 会话已终止：无法更新 LLAP 任务计数 | 
| 逆向移植 | [HIVE-19924](https://issues.apache.org/jira/browse/HIVE-19924): 标记 Repl 负载运行的 distcp 任务 | 
| 逆向移植 | [HIVE-19891](https://issues.apache.org/jira/browse/HIVE-19891)：使用自定义分区目录插入外部表，可能导致数据丢失 | 
| 逆向移植 | [HIVE-19850](https://issues.apache.org/jira/browse/HIVE-19850)：Tez 中的动态分区修剪导致“No work found for tablescan（并未找到表扫描的任何工作）”错误 | 
| 逆向移植 | [HIVE-19806](https://issues.apache.org/jira/browse/HIVE-19806): 对 qtests 输出进行排序以避免测试结果出现不稳定 | 
| 逆向移植 | [HIVE-19770](https://issues.apache.org/jira/browse/HIVE-19770): 支持 CBO 以用于在 select 语句中包含多个相同列的查询 | 
| 逆向移植 | [HIVE-19769](https://issues.apache.org/jira/browse/HIVE-19769): 为数据库和表名创建专用对象 | 
| 逆向移植 | [HIVE-19765](https://issues.apache.org/jira/browse/HIVE-19765)：将 Parquet 特定的测试添加到 BlobstoreCliDriver | 
| 逆向移植 | [HIVE-19759](https://issues.apache.org/jira/browse/HIVE-19759)：片状测试：\$1 TestRpc testServerPort | 
| 逆向移植 | [HIVE-19711](https://issues.apache.org/jira/browse/HIVE-19711)：重构 Hive Schema Tool | 
| 逆向移植 | [HIVE-19701](https://issues.apache.org/jira/browse/HIVE-19701)： getDelegationTokenFromMetaStore不需要同步 | 
| 逆向移植 | [HIVE-19694](https://issues.apache.org/jira/browse/HIVE-19694)：若要创建具体化视图语句，应在运行 MV 的 SQL 语句之前检查 MV 名称是否冲突。 | 
| 逆向移植 | [HIVE-19674](https://issues.apache.org/jira/browse/HIVE-19674): 按十进制常量分组下推到 Druid 表 | 
| 逆向移植 | [HIVE-19668](https://issues.apache.org/jira/browse/HIVE-19668)：重复的 org.antlr.runtime 浪费了超过 30% 的堆量。 CommonToken's 和重复的字符串 | 
| 逆向移植 | [HIVE-19663](https://issues.apache.org/jira/browse/HIVE-19663): 重构 LLAP IO 报告生成 | 
| 逆向移植 | [HIVE-19661：将](https://issues.apache.org/jira/browse/HIVE-20829) Hive 切换 UDFs 为使用 Re2J 正则表达式引擎 | 
| 逆向移植 | [HIVE-19628](https://issues.apache.org/jira/browse/HIVE-19628)：LLAP testSigning 中可能出现 NPE | 
| 逆向移植 | [HIVE-19568](https://issues.apache.org/jira/browse/HIVE-19568)： Active/Passive HS2 HA：不允许直接连接到被动实例 HS2  | 
| 逆向移植 | [HIVE-19564](https://issues.apache.org/jira/browse/HIVE-19564)：向量化：修复 Arithmetic 中的 NULL/错误结果问题 | 
| 逆向移植 | [HIVE-19552](https://issues.apache.org/jira/browse/HIVE-19552)：启用 TestMiniDruidKafkaCliDriver \$1druidkafkamini\$1basic .q | 
| 逆向移植 | [HIVE-19432](https://issues.apache.org/jira/browse/HIVE-19432)： GetTablesOperation 如果配置单元的数据库和表太多，则速度太慢 | 
| 逆向移植 | [HIVE-19360](https://issues.apache.org/jira/browse/HIVE-19360)：CBO：向对象添加 “OptimizedSQL” QueryPlan  | 
| 逆向移植 | [HIVE-19326](https://issues.apache.org/jira/browse/HIVE-19326): 统计数据自动收集：UNION 查询期间聚合不正确 | 
| 逆向移植 | [HIVE-19313](https://issues.apache.org/jira/browse/HIVE-19313)： TestJdbcWithDBTokenStoreNoDoAs测试失败了 | 
| 逆向移植 | [HIVE-19285](https://issues.apache.org/jira/browse/HIVE-19285)：将日志添加到的子类中 MetaDataOperation | 
| 逆向移植 | [HIVE-19235](https://issues.apache.org/jira/browse/HIVE-19235): 更新 Minimr 测试的黄金文件 | 
| 逆向移植 | [HIVE-19104](https://issues.apache.org/jira/browse/HIVE-19104)：当通过重试开始测试时，实例应该 MetaStore 是独立的 | 
| 逆向移植 | [HIVE-18986](https://issues.apache.org/jira/browse/HIVE-18986)：表重命名将运行 java.lang。 StackOverflowError 如果表包含大量列，则在 dataNucleUS 中 | 
| 逆向移植 | [HIVE-18920](https://issues.apache.org/jira/browse/HIVE-18920)：CBO：在初次查询之前初始化 Janino 提供程序 | 
| 逆向移植 | [HIVE-18873](https://issues.apache.org/jira/browse/HIVE-18873)：在静默状态下跳过 MR 的谓词下推 HiveInputFormat 可能会导致存储处理程序产生错误的结果 | 
| 逆向移植 | [HIVE-18871](https://issues.apache.org/jira/browse/HIVE-18871)：由于将 hive.aux.jars.path 设置为 hdfs:// 而导致 hive on tez 执行错误 | 
| 逆向移植 | [HIVE-18725](https://issues.apache.org/jira/browse/HIVE-18725): 如果存在错误的列引用，则改进子查询的错误处理 | 
| 逆向移植 | [HIVE-18696](https://issues.apache.org/jira/browse/HIVE-18696)：在 HiveMetaStore .add\$1partitions\$1core 方法中可能无法正确清理分区文件夹 | 
| 逆向移植 | [HIVE-18453](https://issues.apache.org/jira/browse/HIVE-18453): ACID：添加 "CREATE TRANSACTIONAL TABLE" 语法以统一 ACID ORC 和 Parquet 支持 | 
| 逆向移植 | [HIVE-18201](https://issues.apache.org/jira/browse/HIVE-18201): 为 sq\$1count\$1chec 禁用 XPROD\$1EDGE | 
| 逆向移植 | [HIVE-18140](https://issues.apache.org/jira/browse/HIVE-18140): 在基本统计数据混合大小写中，分区表的统计数据可能会出错 | 
| 逆向移植 | [HIVE-17921](https://issues.apache.org/jira/browse/HIVE-17921): 在 LLAP 中使用 struct 进行聚合会产生错误的结果 | 
| 逆向移植 | [HIVE-17896](https://issues.apache.org/jira/browse/HIVE-17896)：顶部NKey：创建独立的可向量化顶级运算符 NKey  | 
| 逆向移植 | [HIVE-17840](https://issues.apache.org/jira/browse/HIVE-17840)：如果 transactionAllisteners.notifyEvent 失败，则 HiveMetaStore 吃 | 
| 逆向移植 | [HIVE-17043](https://issues.apache.org/jira/browse/HIVE-17043)：如果日后不引用，则密钥会从分组中删除非唯一列 | 
| 逆向移植 | [HIVE-17040](https://issues.apache.org/jira/browse/HIVE-17040)：在具有 FK 关系的情况下，实现连接消除 | 
| 逆向移植 | [HIVE-16839](https://issues.apache.org/jira/browse/HIVE-16839)：同时更改同一分区 openTransaction/commitTransaction 时对的调用不平衡 | 
| 逆向移植 | [HIVE-16100](https://issues.apache.org/jira/browse/HIVE-16100)：动态排序分区优化器丢失同级运算符 | 
| 逆向移植 | [HIVE-15956](https://issues.apache.org/jira/browse/HIVE-15956)： StackOverflowError 当丢弃大量分区时 | 
| 逆向移植 | [HIVE-15177](https://issues.apache.org/jira/browse/HIVE-15177)：当 kerberos 身份验证类型设置为 fromSubject 并且主体包含 \$1HOST 时，使用 hive 进行身份验证失败 | 
| 逆向移植 | [HIVE-14898](https://issues.apache.org/jira/browse/HIVE-14898)： HS2 不应为空身份验证标头错误记录调用堆栈 | 
| 逆向移植 | [HIVE-14493](https://issues.apache.org/jira/browse/HIVE-14493): 具体化视图的分区支持 | 
| 逆向移植 | [HIVE-14431](https://issues.apache.org/jira/browse/HIVE-14431): 将 COALESCE 识别为 CASE | 
| 逆向移植 | [HIVE-13457](https://issues.apache.org/jira/browse/HIVE-13457)：为监控信息创建 HS2 REST API 端点 | 
| 逆向移植 | [HIVE-12342](https://issues.apache.org/jira/browse/HIVE-12342): 将 hive.optimize.index.filter 的默认值设置为 true | 
| 逆向移植 | [HIVE-10296](https://issues.apache.org/jira/browse/HIVE-10296)：当 hive 在元存储上运行多连接查询时，发现强制转换异常 | 
| 逆向移植 | [HIVE-6980](https://issues.apache.org/jira/browse/HIVE-6980)：使用 direct sql 删除表 | 

## Amazon EMR 6.6.0：Hive 配置更改
<a name="emr-Hive-660-configs"></a>
+ 作为 OSS 更改 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 的一部分，用于对动态分区进行排序的属性 `hive.optimize.sort.dynamic.partition` 已替换为 `hive.optimize.sort.dynamic.partition.threshold`。

  `hive.optimize.sort.dynamic.partition.threshold` 配置具有以下潜在值：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ReleaseGuide/Hive-release-history-660.html)

## Amazon EMR 6.6.0：Hive 已知问题
<a name="emr-Hive-660-issues"></a>
+ 如果使用窗口函数对与交集函数相同的列进行查询，则可能会导致如 [HIVE-25278](https://issues.apache.org/jira/browse/HIVE-25278) 中报告的转换无效问题，并导致查询结果不正确或查询失败。解决方法是在查询级别为此类查询禁用 CBO。如需更多信息，请联系 AWS 支持人员。
+  Amazon EMR 6.6.0 包含 Hive 软件版本 3.1.2。Hive 3.1.2 引入了一项功能，如果文本文件包含页眉和页脚，则可将其拆分（[HIVE-21924](https://issues.apache.org/jira/browse/HIVE-21924)）。Apache Tez App Master 读取您的每个文件以确定数据范围内的偏移点。如果您的查询读取大量小型文本文件，这些行为综合起来可能会影响性能。解决方法是使用 `CombineHiveInputFormat` 并通过配置以下属性调整最大拆分大小：

  ```
  SET hive.tez.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
  SET mapreduce.input.fileinputformat.split.maxsize=16777216;
  ```
+ 在 6.6.0 到 6.9.x 版 Amazon EMR 中，带有动态分区和 ORDER BY 或 SORT BY 子句的 INSERT 查询将始终具有两个 Reducer。此问题是由于 OSS 更改 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 所致，该更改将动态排序分区优化置于基于成本的决策之下。如果您的工作负载不需要对动态分区进行排序，建议将 `hive.optimize.sort.dynamic.partition.threshold` 属性设置为 `-1` 以禁用新功能并获得计算正确的 Reducer 数量。此问题已作为 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 的一部分在 OSS Hive 中修复，并已在 Amazon EMR 6.10.0 中修复。