

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

Hive는 Hadoop 클러스터를 기반으로 실행되는 오픈 소스 데이터 웨어하우스 및 분석 패키지입니다. Hive 스크립트는 프로그래밍 모델을 추상화하고 일반적인 데이터 웨어하우스 상호 작용을 지원하는 Hive QL(쿼리 언어)이라는 SQL 유형의 언어를 사용합니다. Hive를 사용하면 Java와 같은 더 낮은 수준의 컴퓨터 언어로 MapReduce 프로그램 또는 DAG(방향성 비순환 그래프) 기반 Tez 작업을 작성하는 복잡성을 피할 수 있습니다.

Hive에서는 직렬화 형식을 포함하여 SQL 패러다임을 확장합니다. 데이터 자체를 건드리지 않고 데이터와 일치하는 테이블 스키마를 생성하여 쿼리 처리를 사용자 지정할 수도 있습니다. SQL은 기본적인 값 유형(예: 날짜, 숫자 및 문자열)만 지원하는 반면, Hive 테이블 값은 JSON 객체, 사용자 정의 데이터 유형, Java로 작성된 함수 등과 같은 구조적 요소입니다.

Hive에 대한 자세한 내용은 [http://hive.apache.org/](http://hive.apache.org/)를 참조하세요.

다음 테이블에는 Amazon EMR이 Hive를 통해 설치하는 구성 요소와 함께 Amazon EMR 7.x 시리즈의 최신 릴리스에 포함된 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이 Hive를 통해 설치하는 구성 요소와 함께 Amazon EMR 6.x 시리즈의 최신 릴리스에 포함된 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이 Hive를 통해 설치하는 구성 요소와 함께 Amazon EMR 5.x 시리즈의 최신 릴리스에 포함된 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 5.18.0부터 Amazon EMR 아티팩트 리포지토리를 사용하여 특정 Amazon EMR 릴리스 버전에서 사용할 수 있는 정확한 버전의 라이브러리와 종속 항목에 대해 작업 코드를 빌드할 수 있습니다. 자세한 내용은 [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>

이 섹션에서는 Amazon EMR의 Hive와 [http://svn.apache.org/viewvc/hive/branches/](http://svn.apache.org/viewvc/hive/branches/)에서 사용할 수 있는 기본 Hive 버전 간의 차이점을 설명합니다.

### 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>

Apache Hive는 `hive.merge.mapfiles`가 true이고 작업의 평균 출력 크기가 `hive.merge.smallfiles.avgsize` 설정보다 작은 경우에만 병합이 트리거되면 맵 전용 작업의 끝에서 작은 파일을 병합합니다. Amazon EMR Hive는 최종 출력 경로가 HDFS에 있는 경우 정확히 동일한 동작을 수행합니다. 출력 경로가 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(S3)의 데이터를 사용하여 Hive 관리형 테이블에서 INSERT, UPDATE, DELETE, MERGE 작업을 실행할 수 있습니다.

### Hive LLAP(Live Long and Process)
<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용 LLAP(Live Long and Process) 기능을 지원합니다. 자세한 내용은 [Hive LLAP 사용](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-llap.html)을 참조하세요.

## Amazon EMR 릴리스 버전 4.x 및 5.x 간 Hive의 차이
<a name="emr-hive-diff"></a>

이 섹션에서는 Amazon EMR 릴리스 4.x의 Hive 버전 1.0.0에서 Amazon EMR 릴리스 5.x의 Hive 2.x로 Hive 구현을 마이그레이션하기 전에 고려해야 할 차이점을 설명합니다.

### 작업 차이점 및 고려 사항
<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를 복잡하게 만들며, 이를 삭제하지 않으면 비용이 발생합니다. 짧은 기간(예: 5일) 후에 `/_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는 MapReduce 대신 Hive의 기본 실행 엔진입니다. Tez은 대부분의 워크플로에서 개선된 성능을 제공합니다.
+ **파티션이 많은 테이블:** 많은 수의 동적 파티션을 생성하는 쿼리는 실패할 수 있으며 많은 파티션이 있는 테이블에서 선택하는 쿼리는 실행하는 데 예상보다 오래 걸릴 수 있습니다. 예를 들어, 100,000 개의 파티션 중에서 선택하려면 10분 이상 걸릴 수 있습니다.

## Amazon EMR에서 Hive의 추가 기능
<a name="emr-hive-additional-features"></a>

Amazon EMR은 Amazon Simple Storage Service(Amazon S3) 및 DynamoDB에서 읽고 쓸 수 있는 기능과 같이 다른 AWS 서비스와 Hive 통합을 지원하는 새로운 기능으로 Hive를 확장합니다.

### 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. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) Amazon EMR 콘솔을 엽니다.

1. **클러스터 생성**을 선택합니다.

1. **Steps(단계)** 섹션의 **Add Step(단계 추가)**에 있는 목록에서 **Hive Program(Hive 프로그램)**을 선택하고 **Configure and add(구성 및 추가)**를 선택합니다.

1.  **Add Step(단계 추가)** 대화 상자에서 다음 표를 가이드로 사용하여 파라미터를 지정한 다음 **Add(추가)**를 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-hive-differences.html)

1. 필요에 따라 값을 선택하고 **Create cluster(클러스터 생성)**를 선택합니다.

**를 사용하여 변수 값을 Hive 단계에 전달하려면 AWS CLI**

를 사용하여 변수 값을 Hive 단계에 전달하려면 `--steps` 파라미터를 AWS CLI사용하고 인수 목록을 포함합니다.
+ 
**참고**  
가독성을 위해 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 SDK;를 사용하여 변수 값을 Hive 단계로 전달하려면**
+ 다음 예에서는 SDK를 사용하여 변수를 단계에 전달하는 방법을 보여 줍니다. 자세한 내용은 *AWS SDK for Java API 참조*에서 [Class 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”));
  ```

### 부분 DynamoDB 스키마를 수용할 Amazon EMR Hive 쿼리
<a name="emr-hive-partial-schema"></a>

Amazon EMR Hive는 쿼리에 모든 열을 포함하지 않아도 데이터를 필터링할 수 있는 열 하위 세트를 지정할 수 있도록 함으로써 DynamoDB 테이블 쿼리 시 최대 유연성을 제공합니다. 이 부분 스키마 쿼리 기술은 스파스 데이터베이스 스키마가 있고 타임스탬프 필터링 같은 몇 개 열에 기초하여 레코드를 필터링해야 하는 경우에 효과적입니다.

 다음 예제에서는 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에서 임의의 항목 조합을 선택하기 위한 쿼리 구문이 표시됩니다.


| 쿼리 예제 | 결과 설명 | 
| --- | --- | 
| SELECT \$1 FROM table\$1name; | 해당 테이블에서 모든 항목(행)을 선택하고 이러한 항목에 사용할 수 있는 모든 열의 데이터를 포함합니다. | 
| SELECT \$1 FROM table\$1name WHERE field\$1name =value; | 해당 테이블에서 일부 항목(행)을 선택하고 이러한 항목에 사용할 수 있는 모든 열의 데이터를 포함합니다. | 
| SELECT column1\$1name, column2\$1name, column3\$1name FROM table\$1name; | 해당 테이블에서 모든 항목(행)을 선택하고 이러한 항목에 사용할 수 있는 일부 열의 데이터를 포함합니다. | 
| SELECT column1\$1name, column2\$1name, column3\$1name FROM table\$1name WHERE field\$1name =value; | 해당 테이블에서 일부 항목(행)을 선택하고 이러한 항목에 사용할 수 있는 일부 열의 데이터를 포함합니다. | 

### 서로 다른 AWS 리전의 DynamoDB 테이블 간에 데이터 복사
<a name="emr-hive-cross-region-ddb-copy"></a>

Amazon EMR Hive는 DynamoDB 테이블마다 설정할 수 있는 `dynamodb.region` 속성을 제공합니다. `dynamodb.region`을 두 테이블에서 서로 다르게 설정할 경우 테이블 간에 복사하는 모든 데이터가 지정된 리전 사이에서 자동으로 발생합니다.

 다음 예제에서는 `dynamodb.region` 속성을 설정하는 Hive 스크립트를 사용하여 DynamoDB 테이블을 생성하는 방법을 보여줍니다.

**참고**  
테이블당 리전 속성은 전역 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 Data Catalog(Amazon EMR 릴리스 5.8.0 이상만 해당).

  자세한 내용은 [Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용](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 Configuration Properties](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-datanucleus.connectionPool.maxPoolSize.1)를 참조하세요.

# Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용
<a name="emr-hive-metastore-glue"></a>

Amazon EMR 릴리스 5.8.0 이상을 사용하면 Glue 데이터 카탈로그를 AWS 메타스토어로 사용하도록 Hive를 구성할 수 있습니다. 영구 메타스토어가 필요하거나 여러 클러스터, 서비스, 애플리케이션 또는 AWS 계정에서 메타스토어를 공유해야 하는 경우에 이 구성을 사용하는 것이 좋습니다.

AWS Glue는 완전 관리형 추출, 변환 및 로드(ETL) 서비스로, 데이터를 분류하고 정리하고 보강하고 다양한 데이터 스토어 간에 안정적으로 이동할 수 있는 간단하고 비용 효율적입니다. Glue 데이터 카탈로그는 Amazon EMR뿐만 아니라 Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena 및 Apache Hive AWS 메타스토어와 호환되는 모든 애플리케이션과 통합하여 다양한 데이터 소스 및 데이터 형식에 걸쳐 통합된 메타데이터 리포지토리를 제공합니다. AWS Glue 크롤러는 Amazon S3의 소스 데이터에서 스키마를 자동으로 추론하고 관련 메타데이터를 데이터 카탈로그에 저장할 수 있습니다. 데이터 카탈로그에 대한 자세한 내용은 [AWS Glue 개발자 안내서의 Glue 데이터 카탈로그 채우기를](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) 참조하세요. *AWS * 

 AWS Glue에는 별도의 요금이 적용됩니다. 데이터 카탈로그의 메타데이터 저장 및 액세스에 대한 월별 요금, Glue ETL 작업 및 AWS 크롤러 런타임에 대해 분당 청구되는 시간당 요금, 프로비저닝된 각 개발 엔드포인트에 대해 분당 청구되는 시간당 요금이 있습니다. 데이터 카탈로그에는 최대 100만 개의 객체를 무료로 저장할 수 있습니다. 100만 개 이상의 객체를 저장하는 경우, 100만 이상의 객체 100,000개마다 1USD가 부과됩니다. 데이터 카탈로그의 객체로는 테이블, 파티션 또는 데이터베이스가 있습니다. 자세한 내용은 [Glue 요금](https://aws.amazon.com/glue/pricing)을 참조하세요.

**중요**  
2017년 8월 14일 이전에 Amazon Athena 또는 Amazon Redshift Spectrum을 사용하여 테이블을 생성한 경우 데이터베이스 및 테이블은 AWS Glue 데이터 카탈로그와 별도의 Athena 관리형 카탈로그에 저장됩니다. Amazon EMR을 이러한 테이블과 통합하려면 AWS Glue 데이터 카탈로그로 업그레이드해야 합니다. 자세한 내용은 *Amazon Athena 사용 설명서*[의 AWS Glue 데이터 카탈로그로 업그레이드를](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) 참조하세요.

## Glue 데이터 카탈로그를 AWS 메타스토어로 지정
<a name="emr-hive-glue-configure"></a>

 AWS Management Console AWS CLI또는 Amazon EMR API를 사용하여 AWS Glue 데이터 카탈로그를 메타스토어로 지정할 수 있습니다. CLI 또는 API를 사용할 때 Hive에 대한 구성 분류를 사용하여 데이터 카탈로그를 지정합니다. 또한 Amazon EMR 5.16.0 이상에서는 구성 분류를 사용하여 다른에서 데이터 카탈로그를 지정할 수 있습니다 AWS 계정. 콘솔을 사용할 때 **고급 옵션** 또는 **빠른 옵션**을 사용하여 데이터 카탈로그를 지정할 수 있습니다.

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

**콘솔을 사용하여 AWS Glue 데이터 카탈로그를 Hive 메타스토어로 지정하려면**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 **클러스터 생성**을 선택합니다.

1. **애플리케이션 번들**에서 **코어 Hadoop**, **HBase** 또는 **사용자 지정**을 선택합니다. 클러스터를 사용자 지정하는 경우 Hive 또는 HCatalog를 애플리케이션 중 하나로 선택해야 합니다.

1. **AWS Glue Data Catalog 설정**에서 **Hive 테이블 메타데이터에 사용** 확인란을 선택합니다.

1. 클러스터에 적용할 다른 옵션을 선택합니다.

1. 클러스터를 시작하려면 **클러스터 생성**을 선택합니다.

------
#### [ 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에서 AWS Glue 데이터 카탈로그를 메타스토어로 사용하여 클러스터를 생성하는 경우를 `hive.metastore.schema.verification`로 설정합니다`false`. 이렇게 하면 Hive 및 HCatalog가 MySQL에 대한 메타스토어 스키마를 검증하는 것을 방지합니다. 이러한 구성이 없으면, 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` 관리형 정책은 필요한 모든 AWS Glue 작업을 `EMR_EC2_DefaultRole` 허용합니다. 그러나 사용자 지정 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>

인스턴스 프로파일에 키를 사용하여 데이터를 암호화하고 복호화할 수 있는 권한이 필요합니다. 다음 두 설명이 모두 적용되는 경우에는 이러한 권한을 구성할 필요가 *없습니다*.
+  AWS Glue용 관리형 키를 사용하여 AWS Glue Data Catalog 객체에 대한 암호화를 활성화합니다.
+ Glue 데이터 카탈로그 AWS 계정 와 동일한 AWS 에 있는 클러스터를 사용합니다.

그렇지 않으면 EC2 인스턴스 프로파일에 연결된 권한 정책에 다음 명령을 추가해야 합니다.

Glue 데이터 카탈로그 암호화에 대한 자세한 내용은 AWS *AWS Glue 개발자 안내서*의 [데이터 카탈로그 암호화를 참조하세요](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html).

### 리소스 기반 권한
<a name="emr-hive-glue-permissions-resource"></a>

Amazon EMR에서 AWS 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 인스턴스에 대한 기본 서비스 역할의 ARN(*EMR\$1EC2\$1DefaultRole*)을 `Principal`로 지정할 수 있습니다.

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

*acct-id*는 AWS Glue 계정 ID와 다를 수 있습니다. 그러면 다른 계정의 EMR 클러스터에서 액세스할 수 있습니다. 각각 다른 계정에서 여러 보안 주체를 지정할 수 있습니다.

## AWS Glue 데이터 카탈로그 사용 시 고려 사항
<a name="emr-hive-glue-considerations-hive"></a>

Glue 데이터 카탈로그를 Hive의 AWS 메타스토어로 사용할 때는 다음 항목을 고려하세요.
+ Hive 셸을 사용한 보조 JAR 추가는 지원되지 않습니다. 차선책으로, `hive-site` 구성 분류를 사용하여 `hive.aux.jars.path` 속성을 설정하면 Hive 클래스 경로에 보조 JAR이 추가됩니다.
+ [Hive 트랜잭션](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)은 지원되지 않습니다.
+  AWS Glue 내에서 테이블 이름을 바꾸는 것은 지원되지 않습니다.
+ `LOCATION`을 지정하지 않고 Hive 테이블을 생성하면 테이블 데이터가 `hive.metastore.warehouse.dir` 속성을 통해 지정된 위치에 저장됩니다. 기본적으로 HDFS에 있는 위치입니다. 다른 클러스터가 테이블에 액세스해야 하는 경우, 테이블을 생성한 클러스터에 대한 적절한 권한이 없으면 실패합니다. 또한 HDFS 스토리지는 일시적이기 때문에, 클러스터가 종료되는 경우 테이블 데이터가 손실되고 테이블을 다시 생성해야 합니다. Glue를 사용하여 Hive 테이블을 생성할 때 Amazon S3`LOCATION`에서 AWS 를 지정하는 것이 좋습니다. 또는 `hive-site` 구성 분류를 사용하여 모든 Hive 테이블에 적용되는 Amazon S3에서 `hive.metastore.warehouse.dir`에 대한 위치를 지정할 수도 있습니다. HDFS 위치에 테이블이 생성되고 테이블을 생성한 클러스터가 여전히 실행 중인 경우 AWS Glue 내에서 테이블 위치를 Amazon S3로 업데이트할 수 있습니다. 자세한 내용은 [Glue 개발자 안내서의 AWS Glue 콘솔에서 테이블 작업을 참조하세요](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html). *AWS * 
+ 따옴표와 아포스트로피가 포함된 파티션 값은 지원되지 않습니다(예: `PARTITION (owner="Doe's").`).
+ [열 통계](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics)는 emr-5.31.0 이상에서 지원됩니다.
+ [Hive 권한 부여](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization) 사용은 지원되지 않습니다. 대안으로 [AWS Glue 리소스 기반 정책](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) 사용을 고려합니다. 자세한 내용은 [AWS Glue 데이터 카탈로그에 대한 Amazon EMR 액세스를 위한 리소스 기반 정책 사용을 참조하세요](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 이상에서는 조건자 표현식에서 사용자 정의 함수(UDF) 사용을 지원합니다. 이전 버전을 사용하는 경우 Hive가 쿼리 실행을 최적화하려는 방식 때문에 쿼리가 실패할 수 있습니다.
+ [임시 테이블](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables)은 지원되지 않습니다.
+  AWS Glue를 사용하여 직접 생성하는 대신 Amazon EMR을 통해 애플리케이션을 사용하여 테이블을 생성하는 것이 좋습니다. AWS Glue를 통해 테이블을 생성하면 필수 필드가 누락되고 쿼리 예외가 발생할 수 있습니다.
+ EMR 5.20.0 이상에서는 AWS Glue 데이터 카탈로그를 메타스토어로 사용할 때 Spark 및 Hive에 대해 병렬 파티션 정리가 자동으로 활성화됩니다. 이 변경 사항은 여러 요청을 병렬로 실행하여 파티션을 검색함으로써 쿼리 계획 시간을 크게 단축합니다. 동시에 실행할 수 있는 총 세그먼트 수는 1\$110입니다. 기본값은 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 메타스토어로 사용하려면 Amazon RDS MySQL 인스턴스 또는 Amazon Aurora PostgreSQLinstance 인스턴스에 외부 데이터베이스 위치를 지정하도록 Hive의 메타스토어에 대한 기본 구성 값을 재정의합니다.

**참고**  
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 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) 및 [Athena DB 클러스터에 연결](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. 다음 AWS CLI 명령과 같이 클러스터를 생성할 때 `hiveConfiguration.json` 파일을 참조합니다. 이 명령에서 파일은 로컬로 저장되며, 파일을 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. 클러스터의 프라이머리 노드에 연결합니다.

   SSH를 사용하여 프라이머리 노드에 연결하는 방법에 대한 자세한 내용은 *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>

Microsoft Excel, MicroStrategy, QlikView, Tableau 등과 같은 인기 있는 비즈니스 인텔리전스 도구를 Amazon EMR과 함께 사용하여 데이터를 탐색하고 시각화할 수 있습니다. 이러한 도구에는 대부분 ODBC(Open Database Connectivity) 또는 JDBC(Java Database Connectivity) 드라이버가 필요합니다. Amazon EMR은 Spark, Hive 또는 Presto 클러스터에 대한 JDBC 및 ODBC 연결을 모두 지원합니다.

아래 예제는 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. [http://www.sql-workbench.net/downloads.html](http://www.sql-workbench.net/downloads.html)에서 운영 체제에 맞는 SQL Workbench/J 클라이언트를 다운로드합니다.

1. 자세한 내용은 SQL Workbench/J 사용 설명서에서 [Installing and starting SQL Workbench/J](http://www.sql-workbench.net/manual/install.html)를 참조하세요.

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`, **대상**에 `master-public-dns-name:10000`을 사용하여 클러스터의 프라이머리 노드에 대한 SSH 터널을 생성합니다(로컬 포트 전달 사용). `master-public-dns-name`을 마스터 노드의 퍼블릭 DNS 이름으로 바꿉니다.

1. JDBC 드라이버를 SQL Workbench에 추가합니다.

   1. **Select Connection Profile(연결 프로파일 선택)** 대화 상자에서 **Manage Drivers(드라이버 관리)**를 클릭합니다.

   1. **Create a new entry(새 항목 생성)**(빈 페이지) 아이콘을 클릭합니다.

   1. **Name(이름)** 필드에 **Hive JDBC**을(를) 입력합니다.

   1. **라이브러리**에서 **Select the JAR file(s)(JAR 파일 선택)** 아이콘을 클릭합니다.

   1. 추출된 드라이버를 포함하는 위치로 이동합니다. 다운로드한 JDBC 드라이버 패키지 버전에 포함된 드라이버를 선택하고 **열기**를 클릭합니다.

      예를 들어, JDBC 드라이버 패키지에는 다음 JAR이 포함될 수 있습니다.

      ```
      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`와 **OK(확인)**를 선택합니다.

1. **Manage Drivers(드라이버 관리)** 대화 상자로 돌아가면 **Classname** 필드가 채워져 있는지 확인하고 **OK(확인)**를 선택합니다.

1. **Select Connection Profile(연결 프로파일 선택)** 대화 상자로 돌아가면 **Driver(드라이버)** 필드가 **Hive JDBC**로 설정되어 있는지 확인하고 **URL** 필드에 `jdbc:hive2://localhost:10000/default` JDBC 연결 문자열을 제공합니다.

1. **OK(확인)**를 선택하여 연결합니다. 연결이 완료된 후 SQL Workbench/J 창 상단에 연결 세부 정보가 나타납니다.

Hive 및 JDBC 인터페이스 사용에 대한 자세한 내용은 Apache Hive 설명서의 [HiveClient](https://cwiki.apache.org/confluence/display/Hive/HiveClient) 및 [HiveJDBCInterface](https://cwiki.apache.org/confluence/display/Hive/HiveJDBCInterface)를 참조하세요.

# Hive 성능 개선
<a name="emr-hive-s3-performance"></a>

Amazon EMR은 Amazon S3에 저장된 데이터를 쿼리, 읽기 및 쓰기 위해 Hive를 사용할 때 성능을 최적화하는 기능을 제공합니다.

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 최적화 커미터는 EMRFS를 사용할 때 EMR Hive가 삽입 쿼리용 파일을 작성하는 데 사용하는 대체 방법입니다. 커미터는 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 이상에서는 Amazon EMR 기반 Hive에서 [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/)를 사용할 수 있습니다. S3 Select를 사용하면 애플리케이션이 객체에서 데이터 하위 집합만 검색할 수 있습니다. Amazon EMR의 경우 처리를 위해 대형 데이터 세트를 필터링하는 계산 작업이 클러스터에서 Amazon S3로 '푸시다운'되어 일부 애플리케이션의 성능이 향상되고 Amazon EMR과 Amazon S3 사이에 전송되는 데이터의 양이 줄어듭니다.

S3 Select에는 CSV 및 JSON 파일을 기반으로, 그리고 Hive 세션 중에 `s3select.filter` 구성 변수를 `true`로 설정하여 Hive 테이블이 지원됩니다. 자세한 내용과 예제는 [코드에서 S3 Select 지정](#emr-hive-s3select-specify) 섹션을 참조하세요.

## S3 Select가 애플리케이션에 적합한가요?
<a name="emr-hive-s3select-apps"></a>

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 파일만 지원됩니다. 여러 줄의 CSV 및 JSON은 지원되지 않습니다.
+ 압축되지 않거나 gzip 또는 bzip2 파일이 지원되지 않습니다.
+ 마지막 줄의 설명 문자는 지원되지 않습니다.
+ 파일 끝의 빈 줄은 처리되지 않습니다.
+ Amazon EMR 기반 Hive는 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 파일로 테이블을 생성한 후 간단한 select 문을 사용하여 테이블을 쿼리할 때 S3 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는 파일 시스템 API를 직접 호출하는 대신 위의 2단계에서 생성된 파일 시스템의 파티션 경로 목록에서 파티션이 있는지 확인합니다. 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용 LLAP(Live Long and Process) 기능을 지원합니다. LLAP는 지능형 인 메모리 캐싱을 통해 영구 대몬을 사용하여 이전의 기본 Tez 컨테이너 실행 모드에 비해 쿼리 성능을 향상시킵니다.

Hive LLAP 대몬은 YARN 서비스로 관리되고 실행됩니다. YARN 서비스는 장기 실행 YARN 애플리케이션으로 간주될 수 있으므로 일부 클러스터 리소스가 Hive LLAP 전용으로 할당되고 다른 워크로드에 사용될 수 없습니다. 자세한 내용은 [LLAP](https://cwiki.apache.org/confluence/display/Hive/LLAP) 및 [YARN 서비스 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은 클러스터 YARN 리소스의 약 60%를 Hive LLAP 대몬(daemon)에 할당합니다. Hive LLAP에 할당되는 클러스터 YARN 리소스의 비율과 Hive LLAP 할당에 고려할 작업 및 코어 노드의 수를 구성할 수 있습니다.

예를 들어, 다음 구성은 3개의 작업 또는 코어 노드에서 3개의 대몬으로 Hive LLAP를 시작하고 3개의 코어 또는 작업 노드의 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 대몬(daemon) 수 조정
<a name="emr-llap-resize"></a>

LLAP 인스턴스 수를 줄이려면 다음 명령을 사용합니다.

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

자세한 내용은 [서비스 구성 요소 Flex](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 파일 형식으로 저장된 데이터의 개인 정보 보호 및 데이터 무결성을 개선합니다. 이 기능은 릴리스 6.6.0부터 Amazon EMR Hive에서 사용할 수 있습니다.

파일 암호화 또는 스토리지 계층 암호화를 포함하여 이전에 지원되는 보안 및 무결성 솔루션은 Amazon EMR 관리 안내서의 [암호화 옵션](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)에 설명합니다. 이러한 솔루션을 Parquet 파일에 사용할 수 있지만, 통합된 Parquet 암호화 메커니즘의 새로운 기능을 활용하면 열 수준에 대한 세분화된 액세스가 가능하고 성능 및 보안이 개선됩니다. Apache github 페이지 [Parquet Modular Encryption](https://github.com/apache/parquet-format/blob/master/Encryption.md)에서 이 기능에 대해 자세히 알아보세요.

사용자는 Hadoop 구성을 사용하여 Parquet 리더와 라이터에 구성을 전달합니다. 사용자가 암호화를 활성화하도록 리더와 라이터를 구성하고 고급 기능을 전환하는 방법에 대한 자세한 구성은 [PARQUET-1854: Properties-driven Interface to Parquet Encryption Management](https://docs.google.com/document/d/1boH6HPkG0ZhgxcaRkGk3QpZ8X_J91uXZwVGwYN45St4/edit)에 나와 있습니다.

## 사용 예제
<a name="usage-examples"></a>

다음 예제에서는 암호화 키를 관리하는 데 AWS KMS 를 사용하여 Hive 테이블을 생성하고 여기에 데이터를 작성하는 방법을 설명합니다.

1. [PARQUET-1373: Encryption Key Management Tools](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 개발자 안내서*의 키 [생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)에 설명된 대로 바닥글에 대한 AWS KMS 암호화 키와 IAM 역할이 액세스할 수 있는 열을 생성합니다. 기본 IAM 역할은 EMR\$1ECS\$1default입니다.

1. Amazon EMR 클러스터의 Hive 애플리케이션에서 [Apache Hive 리소스 설명서](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli#LanguageManualCli-HiveResources)에 설명된 대로 `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
   ```

# HiveServer2에서 전송 중 데이터 암호화
<a name="hs2-encryption-intransit"></a>

Amazon EMR 릴리스 6.9.0부터 HiveServer2(HS2)는 [HiveServer2에서 전송 중 데이터 암호화](#hs2-encryption-intransit) 보안 구성의 일부로 TLS 및 SSL을 지원합니다. 이는 전송 중 암호화가 활성화된 상태로 Amazon EMR 클러스터에서 실행 중인 HS2에 연결하는 방법에 영향을 줍니다. HS2에 연결하려면 JDBC URL의 `TRUSTSTORE_PATH` 및 `TRUSTSTORE_PASSWORD` 파라미터 값을 수정해야 합니다. 다음 URL은 필수 파라미터가 포함된 HS2용 JDBC 연결의 예제입니다.

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

아래의 클러스터 내부 또는 클러스터 외부 HiveServer2 암호화에 대한 적절한 지침을 사용합니다.

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

프라이머리 노드에 SSH로 연결한 후 Beeline 클라이언트를 사용하여 HiveServer2에 액세스하는 경우 `ssl.server.truststore.location` 및 `ssl.server.truststore.password` 구성을 사용하여 `TRUSTSTORE_PATH` 및 `TRUSTSTORE_PASSWORD` 파라미터를 찾기 위해 `/etc/hadoop/conf/ssl-server.xml`을 참조합니다.

다음 예제 명령은 이러한 구성을 검색하는 데 도움이 될 수 있습니다.

```
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 클러스터 외부의 클라이언트에서 HiveServer2에 액세스하는 경우 다음 접근 방식 중 하나를 사용하여 `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
  ```
+ 또는 `ssl.server.truststore.location` 및 `ssl.server.truststore.password` 구성을 사용해 `/etc/hadoop/conf/ssl-server.xml`을 참조하여 `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)
+ [Amazon EMR 7.5.0 - Hive 릴리스 정보](Hive-release-history-750.md)
+ [Amazon EMR 7.4.0 - Hive 릴리스 정보](Hive-release-history-740.md)
+ [Amazon EMR 7.3.0 - Hive 릴리스 정보](Hive-release-history-730.md)
+ [Amazon EMR 7.2.0 - Hive 릴리스 정보](Hive-release-history-720.md)
+ [Amazon EMR 7.1.0 - Hive 릴리스 정보](Hive-release-history-710.md)
+ [Amazon 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$` 마커 객체를 생성하지 않으며, Hive 쓰기 쿼리에 사용되는 중간 매니페스트 파일은 이제 EMRFS의 HDFS와 비교하여 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 커미터를 사용해서는 안 됩니다. | 
| 버그 수정 | [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 삽입 덮어쓰기 쿼리의 경우 코어 사이트 구성: `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 삽입 덮어쓰기 쿼리의 경우 코어 사이트 구성: `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: 비제한적인 권한으로 생성된 자격 증명 파일을 수정했습니다. | 
| 버그 수정 | Apache Ran에서 행 수준 필터링 정책이 활성화된 경우 SemanticException을 수정했습니다. | 
| 버그 수정 | LLAP 또는 ACID가 활성화된 경우 Tez 비동기 초기화 RR을 비활성화합니다. | 

**알려진 문제**
+ Amazon S3 Express One Zone을 출력 위치로 사용하는 Hive 삽입 덮어쓰기 쿼리의 경우 코어 사이트 구성: `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 접두사 나열 기능 추가 | 
| 기능 | S3AFileSystem에서 Hive 쓰기 쿼리를 위한 매직 커미터에 대한 지원 추가 | 

**알려진 문제**
+ Amazon S3 Express One Zone을 출력 위치로 사용하는 Hive 삽입 덮어쓰기 쿼리의 경우 코어 사이트 구성: `fs.s3a.directory.operations.purge.uploads`를 `false`로 설정합니다.

### Amazon EMR 7.6.0 - 새 구성
<a name="Hive-release-history-changes-760-new-configs"></a>


****  

| 분류 | 이름 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
| 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 | 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 | 전환할 플래그 매직 커미터가 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`가 활성화되어 있고 blobstore에 작업 생성 시도 경로의 추가 S3 호출을 저장하는 경우에만 적용됩니다. | 
| hive-site | `hive.blobstore.output-committer.magic.disable.fs.cache.for.llap` | true | Magic Committer를 사용할 때 LLAP의 쓰기 흐름에서 blobstore FS 캐시를 비활성화해야 하는지 여부를 전환하는 플래그입니다. LLAP가 활성화되면 이 플래그가 표시되고 기본적으로 true로 설정됩니다. | 

# Amazon EMR 7.5.0 - Hive 릴리스 정보
<a name="Hive-release-history-750"></a>

## Amazon EMR 7.5.0 - Hive 변경 사항
<a name="Hive-release-history-changes-750"></a>


****  

| Type | 설명 | 
| --- | --- | 
| 개선 사항 | HiveCLI에서 기존 세션을 사용하려고 하는 동안 Tez 세션이 열릴 때까지 기다리는 최대 시간을 10초로 늘렸습니다. | 
| 개선 | LIMIT을 사용하여 간단한 선택 쿼리의 성능을 개선하도록 구성 튜닝 | 

# Amazon EMR 7.4.0 - Hive 릴리스 정보
<a name="Hive-release-history-740"></a>

## Amazon 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 셰이딩된 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 작업이 실패했습니다. | 
| 버그 수정 | [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>


****  

| 분류 | 이름 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
| 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가 활성화되어 있으면 효과가 없습니다. | 

# Amazon EMR 7.3.0 - Hive 릴리스 정보
<a name="Hive-release-history-730"></a>

## Amazon EMR 7.3.0 - Hive 변경 사항
<a name="Hive-release-history-changes-730"></a>


****  

| Type | 설명 | 
| --- | --- | 
| 기능 | [ HIVE-18728](https://issues.apache.org/jira/browse/HIVE-18728) - SSL로 webHCat을 보호합니다. | 
| 개선 | LLAP 대몬 웹 UI에 대한 SSL 키 스토어 자격 증명 구성을 지원합니다. | 
| 개선 | Hive 메타스토어 서버의 SSL 호스트 이름 확인을 제어하는 옵션을 제공합니다. | 
| 버그 수정 | [ HIVE-26541](https://issues.apache.org/jira/browse/HIVE-26541) – WebHCat Service를 시작할 때 NPE입니다. | 
| 버그 수정 | [ HIVE-23011](https://issues.apache.org/jira/browse/HIVE-23011) - 조인 비교 시 공유 작업 최적화 도구가 남은 조건자를 검사해야 합니다. | 
| 버그 수정 | **javax.security.sasl.SaslException** 수정: 전송 중 암호화가 활성화된 경우 HMS와 네임노드 간에 클라이언트와 서버 간에 공통 보호 계층이 없습니다. | 
| 버그 수정 | orc 분할의 끝이 블록 위치의 시작과 겹치는 **IOException**을 수정했습니다. | 
| 버그 수정 | 열 이름에 쉼표 문자가 포함되어 있고 CSVSerde를 사용하는 경우 항상 쉼표로 분할하는 대신 열 이름 구분 기호를 사용합니다. | 

### Amazon EMR 7.3.0 - 새 구성
<a name="Hive-release-history-changes-730-new-configs"></a>


****  

| 분류 | 이름 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
| hcatalog-webhcat-site | templeton.use.ssl | false | WebHCat 서버에 SSL 암호화를 사용하려면 이 값을 true로 설정합니다. | 
| hcatalog-webhcat-site | templeton.keystore.path |  | WebHCat 서버의 SSL 인증서 키 스토어 위치입니다. | 
| hcatalog-webhcat-site | templeton.keystore.password |  | WebHCat 서버의 SSL 인증서 키 스토어 암호입니다. | 
| hcatalog-webhcat-site | templeton.ssl.protocol.blacklist | SSLv2, SSLv3 | WebHCat 서버에 대해 비활성화할 SSL 버전입니다. | 
| hcatalog-webhcat-site | templeton.host | 0.0.0.0 | WebHCat 서버가 수신 대기할 호스트 주소입니다. | 
| hive-site | hive.metastore.ssl.enable.hostname.verification | false | SSL/TLS 핸드셰이킹 중에 호스트 이름 확인을 제어합니다. | 
| hive-site | hive.llap.daemon.web.ssl.keystore.path |  | LLAP 대몬 웹 UI의 SSL 인증서 키 스토어 위치입니다. | 
| hive-site | hive.llap.daemon.web.ssl.keystore.password |  | LLAP 대몬 웹 UI의 SSL 인증서 키 스토어 암호입니다. | 
| hive-site | hive.metastore.hadoop.rpc.protection.override.to.authentication | false | 활성화하면 HMS는 항상 구성 세트에서 인증을 위한 hadoop.rpc.protection 값을 재정의합니다. | 

# Amazon EMR 7.2.0 - Hive 릴리스 정보
<a name="Hive-release-history-720"></a>

## Amazon 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) - 사용자 지정 Tez 대기열의 TLS 및 Yarn HA 모드에서 Yarn RM URL을 확인하는 Hive입니다. | 
| 버그 수정 | [ HIVE-27952](https://issues.apache.org/jira/browse/HIVE-27952) - KeyStore에 여러 인증서가 있는 경우 Hive가 SslContextFactory를 생성하지 못합니다. | 
| 버그 수정 | [ HIVE-28085](https://issues.apache.org/jira/browse/HIVE-28085) - YarnQueueHelper가 HTTPS 지원 YARN WebService에 액세스하지 못합니다. | 
| 버그 수정 | [ HIVE-26436](https://issues.apache.org/jira/browse/HIVE-26436) - initializeOp가 호출되지 않고 닫히는 경우 MR NullPointerException의 Hive입니다. 연산자가 초기화되지 않은 경우 닫기를 건너뜁니다. | 

### Amazon EMR 7.2.0 - 새 구성
<a name="Hive-release-history-changes-720-new-configs"></a>


****  

| 분류 | 이름 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
| hive-site | hive.llap.shuffle.ssl.enabled | false | LLAP용 SSL 셔플을 활성화하려면 *tez.runtime.shuffle.ssl.enable*과 함께 true로 설정합니다. | 

# 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) - 헤더/바닥글 건너뛰기가 포함된 경우 압축 텍스트 입력은 0개의 행을 반환합니다. | 
| 버그 수정 | [HIVE-24190](https://issues.apache.org/jira/browse/HIVE-24190) – LLAP: ShuffleHandler는 TEZ-4233에 따라 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개를 사용해야 합니다. | 
| 업그레이드 | 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 에 문의하십시오.

# Amazon EMR 7.0.0 - Hive 릴리스 정보
<a name="Hive-release-history-700"></a>

## Amazon EMR 7.0.0 - Hive 변경 사항
<a name="Hive-release-history-changes-700"></a>


****  

| Type | 설명 | 
| --- | --- | 
| 업그레이드 | Hive 런타임은 이제 기본적으로 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 비동기 초기화 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`에서 여러 개의 작은 할당을 수정합니다. | 
| 버그 수정 | 워커 노드에서 *LLapDaemon*을 시작할 때 *NoClassDefFound* 예외를 방지하기 위해 llap 서버로 빈 모듈을 패키징합니다. | 
| 업그레이드 | 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): FetchOperator에서 HBase 테이블 입력 형식을 캐시하지 않음 | 
|  버그 수정  |  [HIVE-26452](https://issues.apache.org/jira/browse/HIVE-26452): JOIN를 MAPJOIN로 변환하는 중 NPE, JOIN 열이 두 번 이상 참조됨 | 
|  버그 수정  |  [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): `SessionManager.closeSession`에서 [HIVE-14296](https://issues.apache.org/jira/browse/HIVE-14296)을 통해 도입된 동기화로 인해 사용량이 많은 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 | 설명 | 
| --- | --- | 
|  개선 사항  |  Python3를 지원하도록 Python 스크립트 업그레이드  | 
|  개선 사항  |  [HIVE-27097](https://issues.apache.org/jira/browse/HIVE-27097): MetaStore 클라이언트 및 서버의 재시도 전략 개선  | 
|  버그 수정  |  [HIVE-21778](https://issues.apache.org/jira/browse/HIVE-21778): CBO: null 허용은 항상 쿼리에서 필터를 누락시키므로 'Struct is not null'이 평가됨  | 
|  버그 수정  |  [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): 압축 시 GSS 예외로 인해 Tez 대기열 액세스 확인 실패  | 
|  버그 수정  |  [HIVE-24590](https://issues.apache.org/jira/browse/HIVE-24590): 작업 로깅에서 여전히 log4j 어펜더가 누출됨  | 
|  버그 수정  |  [HIVE-24552](https://issues.apache.org/jira/browse/HIVE-24552): loadDynamicPartitions에서 HMS 연결이 누출되거나 누적될 수 있음  | 
|  버그 수정  |  [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): 하위 쿼리가 있는 버킷팅된 10진수 열에서 버킷 맵 조인을 수행할 때 잘못된 결과가 생성됨  | 
|  버그 수정  |  [HIVE-21986](https://issues.apache.org/jira/browse/HIVE-21986): HiveServer 웹 UI: 기본 응답 헤더에 Strict-Transport-Security 설정  | 
|  버그 수정  |  [HIVE-22148](https://issues.apache.org/jira/browse/HIVE-22148): S3A 위임 토큰이 압축기의 작업 구성에 추가되지 않습니다.  | 
|  버그 수정  |  [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): 경합 조건으로 인해 LlapTaskSchedulerService addNode에서 NullPointerException 발생  | 
|  버그 수정  |  [HIVE-22178](https://issues.apache.org/jira/browse/HIVE-22178): Parquet FilterPredicate에서 SchemaEvolution 이후 CastException 발생  | 
|  버그 수정  |  [HIVE-21517](https://issues.apache.org/jira/browse/HIVE-21517): AggregateStatsCache 수정  | 
|  버그 수정  |  [HIVE-21825](https://issues.apache.org/jira/browse/HIVE-21825): 액티브 및 패시브 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 구문 분석에서 null 또는 빈 문자열을 사전에 확인해야 함  | 
|  버그 수정  |  [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): 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): 'Grouping sets expression is not in GROUP BY key. Error encountered near token' 오류로 쿼리 실패  | 
|  버그 수정  |  [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을 사용하는 경우 로그가 두 개의 파일로 전달될 수 있음  | 
|  버그 수정  |  [HIVE-20620](https://issues.apache.org/jira/browse/HIVE-20620): 동적 파티셔닝을 사용하여 버킷팅 및 정렬된 MM 테이블에 삽입할 때 매니페스트 충돌  | 
|  버그 수정  |  [HIVE-14557](https://issues.apache.org/jira/browse/HIVE-14557): SkewJoin 및 Mapjoin이 모두 활성화된 경우 Nullpointer  | 
|  버그 수정  |  [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): Kerberos 지원 Hive Server 2 웹 UI의 /logs에 액세스하는 중 오류 발생  | 
|  버그 수정  |  [HIVE-20733](https://issues.apache.org/jira/browse/HIVE-20733): GenericUDFOPEqualNS 는 계획 설명에 =를 사용할 수 없음  | 
|  버그 수정  |  [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 집합으로 잘못된 계획이 생성될 수 있음  | 
|  버그 수정  |  [HIVE-21074](https://issues.apache.org/jira/browse/HIVE-21074): IS NOT NULL 조건에서 Hive 버킷팅된 테이블 쿼리 정리가 작동하지 않음  | 
|  버그 수정  |  [HIVE-21223](https://issues.apache.org/jira/browse/HIVE-21223): 파티션이 존재하지 않는 경우 CachedStore가 null 파티션을 반환함  | 
|  버그 수정  |  [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): 프로젝션 표현식에서 null을 사용하면 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): MapJoinBytesTableContainer dummyRow 케이스에서 재사용을 처리하지 않음  | 
|  버그 수정  |  [HIVE-20331](https://issues.apache.org/jira/browse/HIVE-20331): union all, lateral view, Join을 포함한 쿼리가 'cannot find parent in the child operator로 실패  | 
|  버그 수정  |  [HIVE-19968](https://issues.apache.org/jira/browse/HIVE-19968): UDF 예외가 처리되지 않음  | 
|  버그 수정  |  [HIVE-20410](https://issues.apache.org/jira/browse/HIVE-20410): 트랜잭션 테이블에 대한 삽입 덮어쓰기가 중단되면 'Not enough history available for…' 오류 발생  | 
|  버그 수정  |  [HIVE-20059](https://issues.apache.org/jira/browse/HIVE-20059): Hive 스트리밍은 예외 발생 시 무조건 접두사 음영 처리를 시도해야 함  | 
|  버그 수정  |  [HIVE-19424](https://issues.apache.org/jira/browse/HIVE-19424): MetaDataFormatters에서 NPE  | 
|  버그 수정  |  [HIVE-20355](https://issues.apache.org/jira/browse/HIVE-20355): HiveConnection.setSchema의 정리 파라미터  | 
|  버그 수정  |  [HIVE-20858](https://issues.apache.org/jira/browse/HIVE-20858): Utilities.createEmptyBuckets의 구성에서 Serializer가 올바르게 시작되지 않음  | 
|  버그 수정  |  [HIVE-20424](https://issues.apache.org/jira/browse/HIVE-20424): schematool이 beeline 기록을 오염시키지 않아야 함  | 
|  버그 수정  |  [HIVE-20338](https://issues.apache.org/jira/browse/HIVE-20338): LLAP: POSIX 변형 의미 체계와 함께 HDFS 프로토콜 구현을 포함하는 파일 시스템에서 합성 file-id 강제 실행  | 
|  버그 수정  |  [HIVE-11708](https://issues.apache.org/jira/browse/HIVE-11708): 논리 연산자는 NULL과 함께 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 Cartesian 제품 엣지 구성  | 
|  버그 수정  |  [HIVE-14516](https://issues.apache.org/jira/browse/HIVE-14516): OrcInputFormat.SplitGenerator.callInternal  | 
|  버그 수정  |  [HIVE-20981](https://issues.apache.org/jira/browse/HIVE-20981): streaming, 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): create table은 잠재적인 FS 모호성을 방지하려면 항상 완전한 경로를 사용해야 함  | 
|  버그 수정  |  스큐된 열에 액세스하기 전에 skewedInfo에 대한 null 검사 추가  | 

# 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): HIVE-23133의 후속 조치로 나머지 산술 함수에 대해 StrictMath 사용 | 
| 버그 수정 | EMR Hive 6.4.0에서 [HIVE-22900](https://issues.apache.org/jira/browse/HIVE-22900)을 이식하여 발생한 get\$1partitions\$1by\$1filter 및 get\$1num\$1partitions\$1by\$1filter HMS API의 와일드카드 비호환성 수정 | 
| 버그 수정 | [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): ClassCastException으로 쿼리 실패: hive.ql.exec.vector.DecimalColumnVector를 hive.ql.exec.vector.Decimal64ColumnVector로 캐스팅할 수 없음 | 
| 버그 수정 | [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): CTAS 쿼리의 소스 테이블에 문자열 유형이 아닌 열이 있는 경우 ClassCastException 발생 업그레이드 [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): parquet 파일을 읽을 때 벡터화된 리더가 사용되는 경우 ArrayIndexOutOfBoundsException 발생 | 
| 버그 수정 | [HIVE-23607](https://issues.apache.org/jira/browse/HIVE-23607): 권한 문제: 다른 보기에서 보기 생성에 성공하지만 보기 대체 실패 | 
| 버그 수정 | [HIVE-25498](https://issues.apache.org/jira/browse/HIVE-25498): 31개가 넘는 count distinct 함수를 포함하는 쿼리가 잘못된 결과를 반환함 | 
| 버그 수정 | [HIVE-25780](https://issues.apache.org/jira/browse/HIVE-25780): DistinctExpansion에서는 64개가 넘는 그룹화 세트 II를 생성함 | 
| 버그 수정 | [HIVE-23868](https://issues.apache.org/jira/browse/HIVE-23868): 기간 함수 사양: 선행 0 및 후속 0 지원 | 
| 버그 수정 | [HIVE-24539](https://issues.apache.org/jira/browse/HIVE-24539): OrcInputFormat 스키마 생성은 열 구분 기호를 인식해야 함 | 
| 버그 수정 | [HIVE-23476](https://issues.apache.org/jira/browse/HIVE-23476): LLAP: mmap 케이스에도 아레나 사전 할당 | 
| 버그 수정 | [HIVE-25806](https://issues.apache.org/jira/browse/HIVE-25806): LlapCacheAwareFs에서 잠재적 누출 - Parquet, LLAP IO | 
| 버그 수정 | [HIVE-23498](https://issues.apache.org/jira/browse/HIVE-23498): ThriftHttpCliService에서 HTTP Trace 메서드 비활성화 | 
| 버그 수정 | [HIVE-25729](https://issues.apache.org/jira/browse/HIVE-25729): 전체 초기화된 경우 ThriftUnionObjectInspector에 알려야 함 | 
| 버그 수정 | [HIVE-23846](https://issues.apache.org/jira/browse/HIVE-23846): bitvectors의 불필요한 직렬화 및 역직렬화 방지 | 
| 버그 수정 | [HIVE-24233](https://issues.apache.org/jira/browse/HIVE-24233): cbo가 비활성화된 상태로 except 하위 쿼리에서 nullpointer 발생 | 
| 버그 수정 | [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): 제한이 있는 Select에서 기본 테이블이 아닌 테이블에 행을 반환하지 않음 | 
| 버그 수정 | [HIVE-25794](https://issues.apache.org/jira/browse/HIVE-25794): CombineHiveRecordReader: 루프의 log 문으로 인해 메모리 부담 생성 | 
| 버그 수정 | [HIVE-23602](https://issues.apache.org/jira/browse/HIVE-23602): 작업 핸들 세트에 Java 동시 패키지 사용 | 
| 버그 수정 | [HIVE-24045](https://issues.apache.org/jira/browse/HIVE-24045): 기본 데이터베이스 생성 시기와 관련된 로깅 없음 | 
| 버그 수정 | [HIVE-24305](https://issues.apache.org/jira/browse/HIVE-24305): 값을 따옴표로 묶으면 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): HiveDatabaseMetaData의 getIdentifierQuoteString에서 잘못된 값이 반환됨 | 
| 버그 수정 | [HIVE-23850:](https://issues.apache.org/jira/browse/HIVE-23850) 제목이 그룹화 세트가 있는 열이 아닌 경우 PPD 허용 | 
| 버그 수정 | [HIVE-25919](https://issues.apache.org/jira/browse/HIVE-25919): HBaseStorageHandler에서 부울 열 조건부를 푸시할 때 ClassCastException 발생 | 
| 버그 수정 | [HIVE-25261](https://issues.apache.org/jira/browse/HIVE-25261): RetryingHMSHandler에서 대상에 대한 간단한 설명을 포함하는 MetaException을 줄 바꿈해야 함 | 
| 버그 수정 | [HIVE-24792](https://issues.apache.org/jira/browse/HIVE-24792): 작업 중 잠재적 스레드 누출 | 
| 버그 수정 | [HIVE-23409](https://issues.apache.org/jira/browse/HIVE-23409): 타임라인 서비스 중단으로 인해 TezSession 애플리케이션을 다시 열지 못하는 경우 재시도 후 SessionPool의 기본 TezSession이 닫힘 | 
| 버그 수정 | [HIVE-23615](https://issues.apache.org/jira/browse/HIVE-23615): Beeline 명령 클래스에서 null 포인터 참조 해제하지 않음 | 
| 버그 수정 | [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 연산자에 그룹화 세트가 없으면 checkHashModeEfficiency 건너뜀 | 
| 버그 수정 | [HIVE-23873](https://issues.apache.org/jira/browse/HIVE-23873): CBO가 꺼져 있는 경우 Hive JDBCStorageHandler 테이블 쿼리가 NPE로 실패함 | 
| 버그 수정 | [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.isRawFormatFile에서 리더 닫기 | 
| 버그 수정 | [HIVE-24294](https://issues.apache.org/jira/browse/HIVE-24294): TezSessionPool 세션에서 AssertionError 오류가 발생할 수 있음 | 
| 버그 수정 | [HIVE-24182](https://issues.apache.org/jira/browse/HIVE-24182): 영구 UDF 관련 Ranger 권한 부여 문제 | 
| 버그 수정 | [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 수행 시 롤업 요약 행이 누락될 수 있음 | 
| 버그 수정 | [HIVE-22987](https://issues.apache.org/jira/browse/HIVE-22987): DataTypePhysicalVariation이 null인 경우 VectorCoalesce에서 ClassCastException 발생 | 
| 버그 수정 | [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 스토리지 핸들러: JDBC 데이터 소스의 BOOLEAN 및 TIMESTAMP DataType에서 잘못된 결과를 가져옴 | 
| 버그 수정 | [HIVE-19430](https://issues.apache.org/jira/browse/HIVE-19430): 보류 중인 많은 이벤트에서 ObjectStore.cleanNotificationEvents OutOfMemory | 
| 버그 수정 | [HIVE-20785](https://issues.apache.org/jira/browse/HIVE-20785): JDBC DatabaseMetaData.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): 작업 닫기를 잊으면 추가로 HiveServer2 출력 잘림 | 
| 버그 수정 | [HIVE-19888](https://issues.apache.org/jira/browse/HIVE-19888): SessionState의 잘못된 'METASTORE\$1FILTER\$1HOOK will be ignored' 경고 | 
| 버그 수정 | [HIVE-20303](https://issues.apache.org/jira/browse/HIVE-20303): INSERT OVERWRITE TABLE db.table PARTITION (...) IF NOT EXISTS에서 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): alter table 검증에서 잘못된 오류 메시지 | 
| 버그 수정 | [HIVE-21124](https://issues.apache.org/jira/browse/HIVE-21124): HPL/SQL은 CREATE TABLE LIKE 문을 지원하지 않음 | 
| 버그 수정 | [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: 업데이트, 삭제, 병합 시 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): 이전 버전과의 호환성을 위해 메타스토어 예외 처리 변경 사항 롤백 | 
| 버그 수정 | [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): Hive ATSHook는 ATS에 연결하기 전에 yarn.timeline-service.enabled를 검사해야 함 | 
| 버그 수정 | [HIVE-20714](https://issues.apache.org/jira/browse/HIVE-20714): 단일 속성에 대한 SHOW 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): 텍스트 파일에서 데이터를 로드한 후 select count에서 잘못된 결과 제공 | 

# 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 쿼리 파일 읽기 지원 | 
| 개선 사항 | Tez 기반 Hive 작업에 대해 기본적으로 Tez 셔플 핸들러를 활성화함 | 
| 버그 | hive.groupby.skewindata가 활성화된 경우 결정론적 키 분배를 활성화하는 옵션을 reducer에 추가하여 잘못된 결과 수정([HIVE-20220](https://issues.apache.org/jira/browse/HIVE-20220)에 보고됨) | 
| 버그 | 기본 파티션 이름을 구성할 때 통계 계산 실패를 수정함 | 
| 버그 | 전송 중 암호화가 활성화된 클러스터에서 HiveServer2에 대해 기본적으로 SSL을 구성할 때 전달되는 모든 사용자 지정 SSL 분류 파라미터 인식 | 
| 백포트 | [HIVE-23617](https://issues.apache.org/jira/browse/HIVE-23617): storage-api FindBug 문제를 수정함 | 
| 백포트 |  [HIVE-26408](https://issues.apache.org/jira/browse/HIVE-26408): 벡터화: 스크래치 열의 할당 해제를 수정하고 하위 ConstantVectorExpression을 출력으로 재사용하지 않습니다. | 
| 백포트 | [HIVE-23614](https://issues.apache.org/jira/browse/HIVE-23614): removeTempOrDuplicateFiles를 위해 항상 HiveConfig 전달 | 
| 백포트 | [HIVE-23354](https://issues.apache.org/jira/browse/HIVE-23354): compareTempOrDuplicateFiles에서 파일 크기 안전성 검사 제거 | 
| 백포트 | [HIVE-20344](https://issues.apache.org/jira/browse/HIVE-20344): AccessControlException 예외가 발생하던 SBA에 대한 PrivilegeSynchronizer 문제를 수정했습니다. 또한 권한 동기화 도구를 비활성화하기 위해 hive.privilege.synchronizer 속성을 도입함 | 
| 백포트 | [HIVE-15826](https://issues.apache.org/jira/browse/HIVE-15826): 모든 SerDes에 대해 'serialization.encoding' 구성 지원 | 
| 백포트 | [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() short-circuit이 벡터화된 코드 경로에서 사용되지 않음(childSize == 1인 경우) | 
| 백포트 | [HIVE-24523](https://issues.apache.org/jira/browse/HIVE-24523): LazySimpleSerde의 벡터화된 읽기 경로가 타임스탬프에 대해 SERDEPROPERTIES를 인식하지 않음 | 
| 백포트 | [HIVE-23265](https://issues.apache.org/jira/browse/HIVE-23265): 제한 및 오프셋이 설정된 경우 중복된 행 세트가 반환됨 | 
| 백포트 | [HIVE-21492](https://issues.apache.org/jira/browse/HIVE-21492): VectorizedParquetRecordReader가 thrift 및 사용자 지정 도구를 사용하여 생성된 parquet 파일을 읽을 수 없음 | 
| 백포트 | [HIVE-22540](https://issues.apache.org/jira/browse/HIVE-22540): 벡터화: Decimal64 열이 VectorizedBatchUtil.makeLikeColumnVector()에서 작동하지 않음 | 
| 백포트 | [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: group-by 키를 사용하여 여러 count distinct 확장 | 
| 백포트 | [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): 벡터화: 모든 NULL 해시코드가 Murmur3을 사용하여 계산되지 않음 | 
| 백포트 | [HIVE-20419](https://issues.apache.org/jira/browse/HIVE-20419): 벡터화: 해시맵 키에 사용된 후 VectorPartitionDesc 변형 방지 | 
| 백포트 | [HIVE-19388](https://issues.apache.org/jira/browse/HIVE-19388): VectorMapJoinCommonOperator 초기화 중 ClassCastException 발생 | 
| 백포트 | [HIVE-21584](https://issues.apache.org/jira/browse/HIVE-21584): Java 11 준비: 시스템 클래스 로더는 URLClassLoader가 아님 | 
| 백포트 | [HIVE-25107](https://issues.apache.org/jira/browse/HIVE-25107): 클래스 경로 로깅은 디버그 수준이어야 함(2271) | 
| 백포트 | [HIVE-22097](https://issues.apache.org/jira/browse/HIVE-22097): Java 11에서 호환되지 않는 java.util.ArrayList | 
| 백포트 | [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의 hive-metastore에서 jdk.tools dep 제외 | 
| 백포트 | [HIVE-17879](https://issues.apache.org/jira/browse/HIVE-17879): Datanucleus Maven 플러그인 업그레이드 | 
| 백포트 | [HIVE-27004](https://issues.apache.org/jira/browse/HIVE-27004): DateTimeFormatterBuilder\$1appendZoneText는 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.computeOffsetAndBucket 최적화 | 
| 백포트 | [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가 원래 파일에 대한 삭제 이벤트를 필터링하지 않음 | 
| 업그레이드 | Javadocfmf 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>


****  

| 이름 | 분류 | 설명 | 
| --- | --- | --- | 
| 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 | HiveServer2에서 외부 권한 부여자의 권한을 정기적으로 동기화할지 여부. | 
| hive.cli.query.file.encoding | hive-site | cli 인수에 제공된 모든 유형의 쿼리 파일(query 파일, init 쿼리 파일, rc 파일 등)에 대한 파일 인코딩 | 
| hive.emr.tez.shuffle.enabled | hive-site | Tez 기반 Hive는 이제 기본 셔플 핸들러로 mapreduce\$1shuffle 대신 tez\$1shuffle을 기본적으로 사용합니다. | 

## 지원 중단되는 구성
<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 이상에서는 더 이상 지원되지 않습니다.


| 이름 | 기본값  | 
| --- | --- | 
| `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 패스스루(HiveCLI/Steps API)를 통해 Apache Hive 쿼리(쓰기)에 대한 AWS Lake Formation 기반 액세스 제어를 활성화합니다. [ HiveCLI](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html) | 
| 개선 | 로그 크기를 줄이려면 기본적으로 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)으로 인해 통계가 누락되어 동적 파티션을 포함하는 삽입 쿼리에서 잘못된 reducers 수 문제를 수정합니다. | 
| 백포트 | [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): 비용이 많이 드는 ListFile을 사용하는 클라우드 오브젝트 스토어에서 Hive 파티션 삭제 속도가 느림 | 
| 백포트 | [HIVE-19202](https://issues.apache.org/jira/browse/HIVE-19202): HiveAggregate.isBucketedInput()dptj NullPointerException으로 인해 CBO 실패 | 
| 백포트 | [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에서 'OK'가 아닌 오류가 반환됩니다. 이는 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): null 값이 중첩된 복합 유형을 삽입할 때 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.getPrimitiveJavaObject 및 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): TezConfigurationFactory에서 ssl conf 추가 | 
| 백포트 | [HIVE-24710](https://issues.apache.org/jira/browse/HIVE-24710): count(\$1)에 대해 CPU 및 IO 비용을 줄이도록 PTF 반복 최적화 | 
| 백포트 | [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): date\$1format udf는 현지 시간대가 UTC가 아닌 경우 1900년 이전 날짜에 대해 잘못된 결과 반환 | 
| 백포트 | [HIVE-25338](https://issues.apache.org/jira/browse/HIVE-25338): 입력이 빈 경우 conv UDF의 AIOBE | 
| 백포트 | [HIVE-22400](https://issues.apache.org/jira/browse/HIVE-22400): UDF 분(시간 포함)에서 NULL 반환 | 
| 백포트 | [HIVE-25058](https://issues.apache.org/jira/browse/HIVE-25058): PTF: 범위 계산 중 TimestampValueBoundaryScanner를 최적화할 수 있음, pt2 - isDistanceGreater | 
| 백포트 | [HIVE-25449](https://issues.apache.org/jira/browse/HIVE-25449): UTC 이외 시간대에서 tex 작업으로 실행 시 timezone datediff()에서 잘못된 출력 제공 | 
| 백포트 | [HIVE-23688](https://issues.apache.org/jira/browse/HIVE-23688): 벡터화: IndexArrayOutOfBoundsException For 맵 유형 열에 null 값이 포함됨 | 
| 백포트 | [HIVE-22247](https://issues.apache.org/jira/browse/HIVE-22247): 파티션 작업 출력이 빈 경우 HiveHFileOutputFormat에서 FileNotFoundException 발생 | 
| 백포트 | [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): IN/(NOT IN)을 포함하는 메타스토어 직접 sql 쿼리는 SQL DB에서 허용하는 max 파라미터에 따라 분할되어야 함 | 
| 백포트 | [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에서 각 블록의 행을 건너뜀 | 
| 버그 | 특정 시나리오에서 hive.stats.column.autogather 및 hive.groupby.skewindata 모두 활성화된 경우 삽입 시 NPE 수정  | 
| 버그 | 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에 대한 지원 | 
| 기능 | GCSC API를 사용하여 대화형 워크로드를 위해 Amazon EMR Hive와 Lake Formation 통합을 지원합니다. | 
| 기능 | Amazon EMR Hive와 Iceberg의 통합. | 
| 개선 사항 | Amazon EMR 보안 구성을 사용하여 [전송 중 암호화가](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html#emr-encryption-intransit) 활성화된 경우 HiveServer2에서 SSL을 활성화합니다. | 
| 개선 사항 | Hive EMRFS Amazon S3 최적화 커미터를 기본적으로 활성화합니다. 자세한 내용은 [Hive EMRFS S3 최적화 커미터 활성화](hive-optimized-committer.md) 섹션을 참조하세요. | 
| 개선 사항 | [SPARK-34210](https://issues.apache.org/jira/browse/SPARK-34210)을 수정하기 위해 InputFormat의 mapred 버전만 상속하는 HiveHBaseTableInputFormatV2를 추가합니다. 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): ShimLoader를 통해 YARN 큐 관리를 제거합니다. | 
| 백포트 | [HIVE-23190](https://issues.apache.org/jira/browse/HIVE-23190): LLAP: TezSpillRecord에 파일 시스템 객체를 전달하도록 IndexCache를 수정합니다. | 
| 백포트 | [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 이후 정렬을 위해 ProxyFileSystem에서 \$1mkdirs() 메서드를 재정의합니다. | 
| 백포트 | [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): 값이 1,024개가 넘는 경우 Arrow Serde는 복합 데이터 유형을 직렬화 및 직렬화 해제할 수 없음 | 
| 백포트 | [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): float, double, decimal에서 스키마 진화를 처리합니다. | 
| 백포트 | [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>
+ Amazon EMR 6.6.0\$16.9.x에서는 ORDER BY 또는 SORT BY 절과 동적 파티션에서의 INSERT 쿼리에 항상 두 개의 reducer가 있습니다. 이 문제는 OSS 변경 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 때문에 발생하며, 이로 인해 비용 기반 의사 결정에 따라 동적 정렬 파티션 최적화가 적용됩니다. 워크로드에 동적 파티션 정렬이 필요하지 않은 경우 새 기능을 비활성화하고 올바르게 계산된 reducer 수를 가져오도록 `hive.optimize.sort.dynamic.partition.threshold` 속성을 `-1`로 설정하는 것이 좋습니다. 이 문제는 OSS Hive에서 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 일부로 수정되었으며 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 명령에서 파일 시스템 직접 호출을 줄입니다. 성능 향상(10,000개 이상의 파티션에서 최대 15\$120배) | 
| 백포트 | [HIVE-20678](https://issues.apache.org/jira/browse/HIVE-20678): 호환성을 위해 HiveHBaseTableOutputFormat에서 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): explode를 포함하는 union all 및 later view를 사용할 때 잘못된 결과 | 
| 백포트 | [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): VectorizedExpressions 주석이 GenericUDFSQCountCheck에 필요하지 않음 | 
| 백포트 | [HIVE-25278](https://issues.apache.org/jira/browse/HIVE-25278): HiveProjectJoinTransposeRule에서 기간 함수에 대해 잘못된 변환을 수행할 수 있음 | 
| 백포트 | [HIVE-25505](https://issues.apache.org/jira/browse/HIVE-25505): 헤더의 잘못된 결과. 첫 번째 줄이 빈 경우 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 조건이 빈 결과를 반환함 | 
| 버그 | 시작 중에 stderr에서 여러 SLF4J 바인딩 경고 로그 수정 | 
| 버그 | 파티션과 테이블이 다른 파일 시스템에 있을 때 잘못된 FS 오류로 SHOW TABLE EXTENDED 쿼리가 실패하는 문제를 수정합니다. | 

## Amazon EMR 6.8.0 - Hive 알려진 문제
<a name="emr-Hive-680-issues"></a>
+ Amazon EMR 6.6.0\$16.9.x에서는 ORDER BY 또는 SORT BY 절과 동적 파티션에서의 INSERT 쿼리에 항상 두 개의 reducer가 있습니다. 이 문제는 OSS 변경 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 때문에 발생하며, 이로 인해 비용 기반 의사 결정에 따라 동적 정렬 파티션 최적화가 적용됩니다. 워크로드에 동적 파티션 정렬이 필요하지 않은 경우 새 기능을 비활성화하고 올바르게 계산된 reducer 수를 가져오도록 `hive.optimize.sort.dynamic.partition.threshold` 속성을 `-1`로 설정하는 것이 좋습니다. 이 문제는 OSS Hive에서 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 일부로 수정되었으며 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 | 설명 | 
| --- | --- | 
| 기능 | [Amazon 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 구성: hive.blobstore.output-committer.logging, 기본값: false | 
| 기능 | 삽입 시 삭제된 대상 디렉터리가 파티셔닝되지 않은 테이블 및 정적 파티션에 빈 select 결과를 덮어씁니다(Hive 2.x와 비슷한 동작). Hive 구성: hive.emr.iow.clean.target.dir, 기본값: false | 
| 버그 | 파티션 버킷 정렬과 함께 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는 직접 SQL 쿼리 실행을 위해 PreparedStatement를 사용해서는 안 됨 | 
| 백포트 | [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): TestObjectStore에서 잘못된 스레드 ObjectStore 사용 수정 | 
| 백포트 | [HIVE-23534](https://issues.apache.org/jira/browse/HIVE-23534): 메시지 없이 MetaException 감지 시 RetryingMetaStoreClient\$1invoke에서 NPE 발생 | 
| 백포트 | [HIVE-24048](https://issues.apache.org/jira/browse/HIVE-24048): jackson 구성 요소를 버전 2.10.latest - 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 이상으로 업그레이드 | 
| 백포트 | [HIVE-25971](https://issues.apache.org/jira/browse/HIVE-25971): 캐시된 스레드 풀이 닫히지 않아 Tez 작업 종료가 지연됨 | 
| 백포트 | [HIVE-26036](https://issues.apache.org/jira/browse/HIVE-26036): ObjectStore에서 getMTable()로 인해 NPE 발생 | 

## 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 Support에 문의하세요.
+ Amazon EMR 6.6.0\$16.9.x에서는 ORDER BY 또는 SORT BY 절과 동적 파티션에서의 INSERT 쿼리에 항상 두 개의 reducer가 있습니다. 이 문제는 OSS 변경 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 때문에 발생하며, 이로 인해 비용 기반 의사 결정에 따라 동적 정렬 파티션 최적화가 적용됩니다. 워크로드에 동적 파티션 정렬이 필요하지 않은 경우 새 기능을 비활성화하고 올바르게 계산된 reducer 수를 가져오도록 `hive.optimize.sort.dynamic.partition.threshold` 속성을 `-1`로 설정하는 것이 좋습니다. 이 문제는 OSS Hive에서 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 일부로 수정되었으며 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로 업그레이드  | 
| 버그 | Hive 클러스터에서 LLAP가 활성화되었을 때 모든 태스크 및 코어 노드에 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 때문에 velocity를 2.3으로 업그레이드 | 
| 백포트 | [HIVE-25680](https://issues.apache.org/jira/browse/HIVE-25680): HiveMetaStore 인증 모델을 사용하도록 \$1get\$1table\$1meta HiveMetaStore Server API에 권한을 부여합니다. | 
| 백포트 | [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): 메타스토어 클라이언트는 더 이상 세션 간에 공유되지 않음 | 
| 백포트 | [HIVE-24827](https://issues.apache.org/jira/browse/HIVE-24827): Hive 집계 쿼리가 텍스트 파일이 아닌 잘못된 결과를 반환합니다. | 
| 백포트 | [HIVE-24683](https://issues.apache.org/jira/browse/HIVE-24683): 존재하지 않는 경로에 대해 Hadoop23Shim getFileId에서 NPE가 발생할 수 있음 | 
| 백포트 | [HIVE-24656](https://issues.apache.org/jira/browse/HIVE-24656): 맵 및 배열 유형이 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): branch-3.1에서 FIX 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): property-file 및 -e 파라미터를 포함하는 Beeline 실패 | 
| 백포트 | [HIVE-24245](https://issues.apache.org/jira/browse/HIVE-24245): 파티션에서 count 및 distinct를 포함하는 벡터화된 PTF로 인해 잘못된 결과가 생성됩니다. | 
| 백포트 | [HIVE-24224](https://issues.apache.org/jira/browse/HIVE-24224): 압축 파일에서 Tez 기반 Hive에 대한 머리글 및 바닥글을 건너뛰는 문제 수정 | 
| 백포트 | [HIVE-24157](https://issues.apache.org/jira/browse/HIVE-24157): CAST 타임스탬프 ↔ 숫자에서 엄격한 모드 실패 | 
| 백포트 | [HIVE-24113](https://issues.apache.org/jira/browse/HIVE-24113): GenericUDFToUnixTimeStamp에서 NPE | 
| 백포트 | [HIVE-23987](https://issues.apache.org/jira/browse/HIVE-23987): arrow 버전을 0.11.0으로 업그레이드 | 
| 백포트 | [HIVE-23972](https://issues.apache.org/jira/browse/HIVE-23972): LLAP 외부 클라이언트에 외부 클라이언트 ID 추가 | 
| 백포트 | [HIVE-23806](https://issues.apache.org/jira/browse/HIVE-23806): 스키마가 확장되는 경우 모든 파티션의 열 통계 상태 지우기 방지 이렇게 하면 alter table add columns 문의 런타임이 향상됩니다. | 
| 백포트 | [HIVE-23779](https://issues.apache.org/jira/browse/HIVE-23779): beeline 콘솔에서 BasicStatsTask 정보가 인쇄되지 않음 | 
| 백포트 | [HIVE-23306](https://issues.apache.org/jira/browse/HIVE-23306): System.getProperty에 의해 설정된 구성이 있는 경우 RESET 명령이 작동하지 않음 | 
| 백포트 | [HIVE-23164](https://issues.apache.org/jira/browse/HIVE-23164): 대몬(daemon) 스레드가 아니므로 서버가 올바르게 종료되지 않음 | 
| 백포트 | [HIVE-22967](https://issues.apache.org/jira/browse/HIVE-22967): Tez 기반 Hive에 대해 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): ByteBuffer로의 읽기가 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 대몬(daemon) 웹 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.conversio이 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): explain 수행 시 StatsUtils에서 NPE 발생 | 
| 백포트 | [HIVE-22360](https://issues.apache.org/jira/browse/HIVE-22360): 로드된 파일이 열이 테이블 스키마의 열보다 많은 경우 MultiDelimitSerDe가 마지막 열에 잘못된 결과를 반환함 | 
| 백포트 | [HIVE-22332](https://issues.apache.org/jira/browse/HIVE-22332): Hive는 ORC-540 이후 유효한 스키마 진화 설정을 보장해야 함 | 
| 백포트 | [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 구현 | 
| 백포트 | [HIVE-22241](https://issues.apache.org/jira/browse/HIVE-22241): 내부 표현과 그레고리력-율리우스력 혼합 항목을 사용하여 날짜와 타임스탬프를 해석하도록 UDF 구현 | 
| 백포트 | [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쿼리에서 중단된 파이프 쓰기로 실패 | 
| 백포트 | [HIVE-22221](https://issues.apache.org/jira/browse/HIVE-22221): LLAP 외부 클라이언트 - LlapBaseInputFormat\$1getSplits를 줄여야 함 | 
| 백포트 | [HIVE-22208](https://issues.apache.org/jira/browse/HIVE-22208): 마스크 열이 있는 테이블에서 조인을 포함한 쿼리를 다시 작성할 때 예약된 키워드가 있는 열 이름의 이스케이프 처리가 해제됨 | 
| 백포트 | [HIVE-22197](https://issues.apache.org/jira/browse/HIVE-22197): 일반 병합 조인에서 클래스 캐스트 예외가 발생합니다. | 
| 백포트 | [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 cache hotpath에서 비용이 많이 드는 로깅 제거 | 
| 백포트 | [HIVE-22161](https://issues.apache.org/jira/browse/HIVE-22161): UDF: org.apache.hadoop.hive.ql.udf.UDFType 클래스에서 FunctionRegistry 동기화 | 
| 백포트 | [HIVE-22120](https://issues.apache.org/jira/browse/HIVE-22120): 특정 경계 조건에서 왼쪽 외부 맵 조인의 잘못된 결과 및 ArrayOutOfBound 예외 수정 | 
| 백포트 | [HIVE-22115](https://issues.apache.org/jira/browse/HIVE-22115): 속성이 false로 설정된 경우 쿼리 라우팅 어펜더 생성 방지 | 
| 백포트 | [HIVE-22113](https://issues.apache.org/jira/browse/HIVE-22113): AMReporter 관련 RuntimeException에서 LLAP 종료 방지 | 
| 백포트 | [HIVE-22106](https://issues.apache.org/jira/browse/HIVE-22106): 파티션 평가에 대한 교차 쿼리 동기화 제거 | 
| 백포트 | [HIVE-22099](https://issues.apache.org/jira/browse/HIVE-22099): HIVE-20007 이후 여러 날짜 관련 UDF에서 율리우스력 날짜를 제대로 처리할 수 없음 | 
| 백포트 | [HIVE-22037](https://issues.apache.org/jira/browse/HIVE-22037): OOM으로 인해 종료 시 HS2에서 로깅해야 함 | 
| 백포트 | [HIVE-21976](https://issues.apache.org/jira/browse/HIVE-21976): Calcite HiveSortLimit에서 오프셋은 0 대신 null이어야 함 | 
| 백포트 | [HIVE-21924](https://issues.apache.org/jira/browse/HIVE-21924): 머리글과 바닥글이 있어도 텍스트 파일 분할 | 
| 백포트 | [HIVE-21913](https://issues.apache.org/jira/browse/HIVE-21913): GenericUDTFGetSplits는 LLAP와 동일한 방식으로 사용자 이름을 처리해야 함 | 
| 백포트 | [HIVE-21905](https://issues.apache.org/jira/browse/HIVE-21905): FetchOperator 클래스 관련 제네릭 개선 | 
| 백포트 | [HIVE-21902](https://issues.apache.org/jira/browse/HIVE-21902): HiveServer2 UI: jetty 응답 헤더에 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 표현식을 위한 벡터라이저 유형 캐스팅 개선 | 
| 백포트 | [HIVE-21862](https://issues.apache.org/jira/browse/HIVE-21862): ORC ppd가 타임스탬프와 함께 잘못된 결과를 생성함 | 
| 백포트 | [HIVE-21846](https://issues.apache.org/jira/browse/HIVE-21846): LlapDaemon 지표를 주기적으로 가져오는 스레드를 TezAM에 생성 | 
| 백포트 | [HIVE-21837](https://issues.apache.org/jira/browse/HIVE-21837): 선택한 열의 값이 모두 null인 경우 MapJoin에서 예외 발생 | 
| 백포트 | [HIVE-21834](https://issues.apache.org/jira/browse/HIVE-21834): 필터 조건을 단순화하기 위한 불필요한 직접 호출 방지 | 
| 백포트 | [HIVE-21832](https://issues.apache.org/jira/browse/HIVE-21832): 평균 대기열, 지원, 응답 시간을 구하는 새로운 지표 | 
| 백포트 | [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): CBO: TableRelOptHiveTable 복사 중 메타스토어 트래픽 포함 | 
| 백포트 | [HIVE-21815](https://issues.apache.org/jira/browse/HIVE-21815): ORC 파일의 통계는 두 번 구문 분석됨 | 
| 백포트 | [HIVE-21805](https://issues.apache.org/jira/browse/HIVE-21805): HiveServer2: 빠른 ShutdownHookManager API 사용 | 
| 백포트 | [HIVE-21799](https://issues.apache.org/jira/browse/HIVE-21799): 조인 키가 집계 열에 있는 경우 DynamicPartitionPruningOptimization에서 NullPointerException 발생 | 
| 백포트 | [HIVE-21794](https://issues.apache.org/jira/browse/HIVE-21794): 구체화된 뷰 파라미터를 sqlStdAuthSafeVarNameRegexes에 추가 | 
| 백포트 | [HIVE-21768](https://issues.apache.org/jira/browse/HIVE-21768): JDBC: 포함되지 않은 UNION 쿼리의 기본 집합 접두사 제거 | 
| 백포트 | [HIVE-21746](https://issues.apache.org/jira/browse/HIVE-21746): CBO가 비활성화된 상태로 동적으로 파티셔닝된 해시 조인 중 ArrayIndexOutOfBoundsException 발생 | 
| 백포트 | [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): 여러 프라이머리 키에 대해 서식이 지정된 설명에 잘못된 정보가 표시됨 | 
| 백포트 | [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 explain extended에서 정밀도가 없는 타임스탬프 유형 인쇄 | 
| 백포트 | [HIVE-21592](https://issues.apache.org/jira/browse/HIVE-21592): 표현식에 CONCAT가 포함된 경우 최적화된 SQL이 표시되지 않음 | 
| 백포트 | [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으로 인해 create 명령에 실패한 경우 레지스트리에서 함수를 제거해서는 안 됨 | 
| 백포트 | [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은 SubmitWorkRequestProto 빌드 중 TASK\$1ATTEMPT\$1ID conf(있는 경우)에서 작업 번호를 가져와야 함 | 
| 백포트 | [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): Group by 키 감소 최적화 - query23에서 키가 감소하지 않음 | 
| 백포트 | [HIVE-21362](https://issues.apache.org/jira/browse/HIVE-21362): protobuf 파일에서 읽을 수 있도록 입력 형식 및 serde를 추가합니다. | 
| 백포트 | [HIVE-21340](https://issues.apache.org/jira/browse/HIVE-21340): CBO: SemiJoin에 입력되는 키가 아닌 열 정리 | 
| 백포트 | [HIVE-21332](https://issues.apache.org/jira/browse/HIVE-21332): 잠긴 버퍼 대신 잠기지 않은 버퍼 제거 | 
| 백포트 | [HIVE-21329](https://issues.apache.org/jira/browse/HIVE-21329): 운영자 파이프라인에 따라 사용자 지정 Tex 런타임에서 출력 버퍼 크기를 정렬하지 않음 | 
| 백포트 | [HIVE-21295](https://issues.apache.org/jira/browse/HIVE-21295): StorageHandler는 Hive 규칙을 사용하여 날짜를 문자열로 변환해야 함 | 
| 백포트 | [HIVE-21294](https://issues.apache.org/jira/browse/HIVE-21294): 벡터화: 1-reducer 셔플에서 객체 해시 함수를 건너뛸 수 있음 | 
| 백포트 | [HIVE-21255](https://issues.apache.org/jira/browse/HIVE-21255): JdbcStorageHandler에서 QueryConditionBuilder 제거 | 
| 백포트 | [HIVE-21253](https://issues.apache.org/jira/browse/HIVE-21253): JDBC StorageHandler에서 DB2 지원 | 
| 백포트 | [HIVE-21232](https://issues.apache.org/jira/browse/HIVE-21232): LLAP: cache-miss 친화적 분할 선호도 공급자 추가 | 
| 백포트 | [HIVE-21214](https://issues.apache.org/jira/browse/HIVE-21214): MoveTask : compareTempOrDuplicateFiles 파일 중복 제거에 대한 파일 크기 대신, attemptId 사용 | 
| 백포트 | [HIVE-21184](https://issues.apache.org/jira/browse/HIVE-21184): 비용 정보와 함께 explain 및 explain 서식 지정된 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): select 연산자 입력이 임시 열인 경우 벡터화로 일부가 출력으로 재사용될 수 있음 | 
| 백포트 | [HIVE-20978](https://issues.apache.org/jira/browse/HIVE-20978): 'hive.jdbc.\$1'를 sqlStdAuthSafeVarNameRegexes에 추가해야 함 | 
| 백포트 | [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'로 실패 | 
| 백포트 | [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): Calcite에서 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 서비스의 키탭 URI는 HDFS만 지원하도록 제한됨 | 
| 백포트 | [HIVE-20898](https://issues.apache.org/jira/browse/HIVE-20898): 시간 관련 함수의 경우 인수를 null을 허용하지 않는 유형으로 캐스팅할 수 없음 | 
| 백포트 | [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): VectorHashKeyWrapperTwoLong에 대한 Murmur 해시를 사용하여 해시 충돌 감소 | 
| 백포트 | [HIVE-20868](https://issues.apache.org/jira/browse/HIVE-20868): TezDummyOperator의 MapRecordProcessor 내 getFinalOp에 하위 연산자가 있는 경우 간헐적으로 SMB 조인 실패 | 
| 백포트 | [HIVE-20853](https://issues.apache.org/jira/browse/HIVE-20853): llap 대몬(daemon) API에서 ShuffleHandler.registerDag 노출 | 
| 백포트 | [HIVE-20850](https://issues.apache.org/jira/browse/HIVE-20850): 가능한 경우 프로젝션에서 차원 테이블로 케이스 조건 푸시 | 
| 백포트 | [HIVE-20842](https://issues.apache.org/jira/browse/HIVE-20842): group by의 통계를 추정하기 위해 HIVE-20660에 도입된 로직 수정 | 
| 백포트 | [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): 왼쪽의 조인 \$1 group by를 왼쪽 세미 조인으로 변환하도록 HiveSemiJoin 규칙 개선 | 
| 백포트 | [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): Tumbling Window UDF 추가 | 
| 백포트 | [HIVE-20767](https://issues.apache.org/jira/browse/HIVE-20767): 조인 연산자 간의 여러 프로젝트가 제약 조건을 사용한 조인 재정렬에 영향을 미칠 수 있음 | 
| 백포트 | [HIVE-20762](https://issues.apache.org/jira/browse/HIVE-20762): NOTIFICATION\$1LOG 정리 간격이 60초로 하드코딩되어 너무 짧음 | 
| 백포트 | [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에서 3.1.x에 적용 가능한 HIVE-20740을 백포트합니다. | 
| 백포트 | [HIVE-20734](https://issues.apache.org/jira/browse/HIVE-20734): Beeline: beeline-site.xml이 있고 hive CLI가 beeline으로 리디렉션되면 프롬프트를 표시하는 대신, 시스템 사용자 이름, 더미 암호를 사용해야 함 | 
| 백포트 | [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): 제약 조건이 있는 성능 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): 맵 조인 선택 중 데이터 구조 인식 추정으로 인한 오버헤드 고려 | 
| 백포트 | [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가 대몬(daemon) 상태로 설정되지 않음 | 
| 백포트 | [HIVE-20660](https://issues.apache.org/jira/browse/HIVE-20660): 총 행 수를 소스 테이블로 바인딩하여 Group by 통계 추정을 개선할 수 있음 | 
| 백포트 | [HIVE-20652](https://issues.apache.org/jira/browse/HIVE-20652): 서로 다른 두 데이터 소스를 jdbc 드라이버로 JdbcStorageHandler 푸시 조인 | 
| 백포트 | [HIVE-20651](https://issues.apache.org/jira/browse/HIVE-20651): JdbcStorageHandler 암호를 암호화해야 함 | 
| 백포트 | [HIVE-20649](https://issues.apache.org/jira/browse/HIVE-20649): Orc 라이터에 대한 LLAP 인식 메모리 관리자 | 
| 백포트 | [HIVE-20648](https://issues.apache.org/jira/browse/HIVE-20648): LLAP: 벡터 group by 연산자에서 실행기당 메모리를 사용해야 함 | 
| 백포트 | [HIVE-20646](https://issues.apache.org/jira/browse/HIVE-20646): IS NOT NULL인 경우 파티션 필터 조건이 메타스토어 쿼리로 푸시다운되지 않음 | 
| 백포트 | [HIVE-20644](https://issues.apache.org/jira/browse/HIVE-20644): Hive 런타임 예외를 통해 민감한 정보 노출 방지 | 
| 백포트 | [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의 맵 조인 캐시 항목 공유 확장 | 
| 백포트 | [HIVE-20619](https://issues.apache.org/jira/browse/HIVE-20619): 기본적으로 HiveServer2에 MultiDelimitSerDe 포함 | 
| 백포트 | [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' 오류 발생 | 
| 백포트 | [HIVE-20601](https://issues.apache.org/jira/browse/HIVE-20601): DbNotificationListener의 ALTER\$1PARTITION 이벤트에서 EnvironmentContext null | 
| 백포트 | [HIVE-20583](https://issues.apache.org/jira/browse/HIVE-20583): HiveConnection에서 kerberos 인증에만 정식 호스트 이름 사용 | 
| 백포트 | [HIVE-20582](https://issues.apache.org/jira/browse/HIVE-20582): hive 프로토 로깅에서 hflush를 구성 가능하도록 설정 | 
| 백포트 | [HIVE-20563](https://issues.apache.org/jira/browse/HIVE-20563): 벡터화: THEN/ELSE 유형 및 결과 유형이 다른 경우 CASE WHEN 표현식이 실패함 | 
| 백포트 | [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): Hive 쿼리를 제출하기 위해 beeline을 사용하도록 WebHCat 전환 | 
| 백포트 | [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): 필드의 null 허용 여부로 인해 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의 모든 uris를 검색하도록 유틸리티 명령 추가 | 
| 백포트 | [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): 맵 조인 선택 시 데이터 구조 인식 추정 사용 | 
| 백포트 | [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): HIVE-19440 이후 GenericUDFRestrictInformationSchema 손상됨 | 
| 백포트 | [HIVE-20477](https://issues.apache.org/jira/browse/HIVE-20477): 표현식에 IN이 포함된 경우 최적화된 SQL이 표시되지 않음 | 
| 백포트 | [HIVE-20467](https://issues.apache.org/jira/browse/HIVE-20467): 리소스 계획 및 삭제에서 IF NOT EXISTS/IF EXISTS 허용 | 
| 백포트 | [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): security.authorization.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를 기본 null 정렬로 설정 | 
| 백포트 | [HIVE-20418](https://issues.apache.org/jira/browse/HIVE-20418): LLAP IO는 열을 선택하지 않은 쿼리에 대해 행 인덱스가 올바르게 비활성화된 ORC 파일을 처리하지 못할 수 있음 | 
| 백포트 | [HIVE-20412](https://issues.apache.org/jira/browse/HIVE-20412): HiveMetaHook의 NPE | 
| 백포트 | [HIVE-20406](https://issues.apache.org/jira/browse/HIVE-20406): 중첩된 Coalesce로 인해 잘못된 결과 생성 | 
| 백포트 | [HIVE-20399](https://issues.apache.org/jira/browse/HIVE-20399): 완전히 검증되지 않은 사용자 지정 테이블 위치를 포함하는 CTAS는 MM 테이블에서 실패 | 
| 백포트 | [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 프로토 이벤트 후크에서 잘못된 대기열 이름 및 동기화 문제. | 
| 백포트 | [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 통계 추정이 꺼짐, null filte | 
| 백포트 | [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): timestamp 함수의 출력을 문자열로 사용할 때 Druid 에는 타임스탬프에서 문자열로의 명시적 CAST가 필요함 | 
| 백포트 | [HIVE-20339](https://issues.apache.org/jira/browse/HIVE-20339): 벡터화: 불필요한 제한을 높여 RANK가 있는 일부 PTF가 벡터화되지 않음 | 
| 백포트 | [HIVE-20337](https://issues.apache.org/jira/browse/HIVE-20337): CachedStore: getPartitionsByExpr이 파티션 목록을 잘못 채움 | 
| 백포트 | [HIVE-20336](https://issues.apache.org/jira/browse/HIVE-20336): 구체화된 뷰에 대한 마스킹 및 필터링 정책 | 
| 백포트 | [HIVE-20326](https://issues.apache.org/jira/browse/HIVE-20326): NO RELY 대신 기본값으로 RELY를 포함하는 제약 조건 생성 | 
| 백포트 | [HIVE-20321](https://issues.apache.org/jira/browse/HIVE-20321): 벡터화: 1 col VectorHashKeyWrapper의 메모리 크기를 <1 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 클라이언트에서 LlapOutputFormatService와 함께 자체 BufferAllocator를 사용하도록 허용 | 
| 백포트 | [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): GetSplits 중에 버퍼를 할당하지 않도록 ArrowColumnarBatchSerDe 초기화 지연 | 
| 백포트 | [HIVE-20281](https://issues.apache.org/jira/browse/HIVE-20281): SharedWorkOptimizer가 'operator cache contents and actual plan differ'로 실패 | 
| 백포트 | [HIVE-20277](https://issues.apache.org/jira/browse/HIVE-20277): 벡터화: BOOLEAN을 반환하는 케이스 표현식은 FILTER에서 지원되지 않음 | 
| 백포트 | [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): 세미조인 감소: 작은 테이블에 맵 조인 업스트림이 있는 경우 세미 조인 브랜치로 인한 주기가 감지되지 않을 수 있습니다. | 
| 백포트 | [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): 세미조인 감소: 로컬 변수를 사용하여 외부 테이블 조건 검사 | 
| 백포트 | [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 | 
| 백포트 | [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로 이어져야 함 | 
| 백포트 | [HIVE-20209](https://issues.apache.org/jira/browse/HIVE-20209): repl 덤프에서 메타스토어 연결의 첫 번째 시도 실패 | 
| 백포트 | [HIVE-20207](https://issues.apache.org/jira/browse/HIVE-20207): 벡터화: 필터 및 비교에서 NULL 및 잘못된 결과 문제 수정 | 
| 백포트 | [HIVE-20204](https://issues.apache.org/jira/browse/HIVE-20204): IN 작업 중 유형 변환 | 
| 백포트 | [HIVE-20203](https://issues.apache.org/jira/browse/HIVE-20203): Arrow SerDe에서 DirectByteBuffer 누출 | 
| 백포트 | [HIVE-20197](https://issues.apache.org/jira/browse/HIVE-20197): 벡터화: DECIMAL\$164 테스트 추가, 날짜, 산술, 타임스탬프 산술 추가, GROUP BY 집계 더 추가 | 
| 백포트 | [HIVE-20193](https://issues.apache.org/jira/browse/HIVE-20193): explain plan json에 cboInfo가 없음 | 
| 백포트 | [HIVE-20192](https://issues.apache.org/jira/browse/HIVE-20192): 메타스토어가 포함된 HS2에서 JDOPersistenceManager 객체 유출 | 
| 백포트 | [HIVE-20183](https://issues.apache.org/jira/browse/HIVE-20183): 소스 테이블에 빈 버킷이 있는 경우 버킷팅된 테이블에서 삽입하면 데이터가 손실될 수 있음 | 
| 백포트 | [HIVE-20177](https://issues.apache.org/jira/browse/HIVE-20177): 벡터화: GroupBy 스트리밍 모드에서 KeyWrapper 할당 감소 | 
| 백포트 | [HIVE-20174](https://issues.apache.org/jira/browse/HIVE-20174): 벡터화: GROUP BY 집계 함수에서 NULL 및 잘못된 결과 문제 수정 | 
| 백포트 | [HIVE-20172](https://issues.apache.org/jira/browse/HIVE-20172): 원격 메타스토어에 연결하려는 중 StatsUpdater에서 GSS 예외로 실패 | 
| 백포트 | [HIVE-20153](https://issues.apache.org/jira/browse/HIVE-20153): Count 및 Sum UDF가 Hive 2 이상에서 더 많은 메모리를 소비함 | 
| 백포트 | [HIVE-20152](https://issues.apache.org/jira/browse/HIVE-20152): repl 덤프가 실패하면 db 상태를 재설정하여 테이블 이름을 바꿀 수 있음 | 
| 백포트 | [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: 하나 이상이 사용된 경우 DAG 카운터만 집계 | 
| 백포트 | [HIVE-20101](https://issues.apache.org/jira/browse/HIVE-20101): BloomKFilter: 로컬 byte[] 배열 완전히 사용 금지 | 
| 백포트 | [HIVE-20100](https://issues.apache.org/jira/browse/HIVE-20100): OpTraits : 불일치 감지 시 Select 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: 회계에 대해 Netty와 함께 ArrowBuf 사용 | 
| 백포트 | [HIVE-20090](https://issues.apache.org/jira/browse/HIVE-20090): 새로운 기회를 발견할 수 있도록 세미조인 감소 필터의 생성 확장 | 
| 백포트 | [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이 라이브러리에 없어야 함 | 
| 백포트 | [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): ConvertDecimal64ToDecimal에 사용된 잘못된 규모로 잘못된 결과 생성 | 
| 백포트 | [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 후속 조치 --> 데이터 유형 변환이 암시적이지 않은 경우에만 ORC에 대한 인코딩된 LLAP I/O를 비활성화하도록 SchemaEvolution.isOnlyImplicitConversion에 직접 호출 추가 | 
| 백포트 | [HIVE-19989](https://issues.apache.org/jira/browse/HIVE-19989): 메타스토어가 HADOOP2 지표에 잘못된 애플리케이션 이름을 사용함 | 
| 백포트 | [HIVE-19981](https://issues.apache.org/jira/browse/HIVE-19981): 테이블 삭제 시 데이터를 삭제하도록 HiveStrictManagedMigration 유틸리티에서 외부 테이블로 변환된 관리형 테이블을 설정해야 함 | 
| 백포트 | [HIVE-19967](https://issues.apache.org/jira/browse/HIVE-19967): SMB 조인: PTFOperator ala GBY Op에 대한 Optraits 필요 | 
| 백포트 | [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): select에 동일한 열이 여러 개 있는 쿼리에 대한 CBO 지원 | 
| 백포트 | [HIVE-19769](https://issues.apache.org/jira/browse/HIVE-19769): DB 및 테이블 이름에 대한 전용 객체 생성 | 
| 백포트 | [HIVE-19765](https://issues.apache.org/jira/browse/HIVE-19765): BlobstoreCliDriver에 Parquet 특정 테스트 추가 | 
| 백포트 | [HIVE-19759](https://issues.apache.org/jira/browse/HIVE-19759): 불안정 테스트: TestRpc\$1testServerPort | 
| 백포트 | [HIVE-19711](https://issues.apache.org/jira/browse/HIVE-19711): Hive 스키마 도구 리팩터링 | 
| 백포트 | [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): Group by 십진수 상수는 Druid 테이블로 푸시다운 | 
| 백포트 | [HIVE-19668](https://issues.apache.org/jira/browse/HIVE-19668): 힙의 30% 넘게 중복 org.antlr.runtime.CommonToken 및 중복 문자열에서 소비 | 
| 백포트 | [HIVE-19663](https://issues.apache.org/jira/browse/HIVE-19663): LLAP IO 보고서 생성 리팩터링 | 
| 백포트 | [HIVE-19661](https://issues.apache.org/jira/browse/HIVE-20829): Hive UDF를 Re2J 정규식 엔진을 사용하도록 전환 | 
| 백포트 | [HIVE-19628](https://issues.apache.org/jira/browse/HIVE-19628): LLAP testSigning에서 잠재적 NPE | 
| 백포트 | [HIVE-19568](https://issues.apache.org/jira/browse/HIVE-19568): 액티브/패시브 HS2 HA: 패시브 HS2 인스턴스에 대한 직접 연결을 허용하지 않음 | 
| 백포트 | [HIVE-19564](https://issues.apache.org/jira/browse/HIVE-19564): 벡터화: 산술의 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): hive에 데이터베이스 및 테이블이 너무 많은 경우 GetTablesOperation 속도가 느려짐 | 
| 백포트 | [HIVE-19360](https://issues.apache.org/jira/browse/HIVE-19360): CBO: QueryPlan 객체에 'optimizedSQL' 추가 | 
| 백포트 | [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): 재시도를 통해 메타스토어 테스트를 시작하는 경우 인스턴스가 독립적이어야 함 | 
| 백포트 | [HIVE-18986](https://issues.apache.org/jira/browse/HIVE-18986): 테이블에 열이 많은 경우 테이블 이름을 바꿀 때 dataNucleus에서 java.lang.StackOverflowError 발생 | 
| 백포트 | [HIVE-18920](https://issues.apache.org/jira/browse/HIVE-18920): CBO: 첫 번째 쿼리에 Janino 공급자 초기화 | 
| 백포트 | [HIVE-18873](https://issues.apache.org/jira/browse/HIVE-18873): HiveInputFormat에서 MR에 대한 조건자 푸시다운을 자동으로 건너뛰면 스토리지 핸들러에서 잘못된 결과를 생성할 수 있음 | 
| 백포트 | [HIVE-18871](https://issues.apache.org/jira/browse/HIVE-18871): hive.aux.jars.path를 hdfs://로 설정했기 때문에 tez 기반 hive에서 실행 오류 발생 | 
| 백포트 | [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에서 구문을 사용한 집계에서 잘못된 결과 생성 | 
| 백포트 | [HIVE-17896](https://issues.apache.org/jira/browse/HIVE-17896): TopNKey: 벡터화 가능한 독립 실행형 TopnKey 연산자 생성 | 
| 백포트 | [HIVE-17840](https://issues.apache.org/jira/browse/HIVE-17840): transactionalListeners.notifyEvent에 실패한 경우 HiveMetaStore에서 예외 발생 | 
| 백포트 | [HIVE-17043](https://issues.apache.org/jira/browse/HIVE-17043): 나중에 참조하지 않을 경우 group by 키에서 고유하지 않은 열 제거 | 
| 백포트 | [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/ko_kr/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;
  ```
+ Amazon EMR 6.6.0\$16.9.x에서는 ORDER BY 또는 SORT BY 절과 동적 파티션에서의 INSERT 쿼리에 항상 두 개의 reducer가 있습니다. 이 문제는 OSS 변경 [HIVE-20703](https://issues.apache.org/jira/browse/HIVE-20703) 때문에 발생하며, 이로 인해 비용 기반 의사 결정에 따라 동적 정렬 파티션 최적화가 적용됩니다. 워크로드에 동적 파티션 정렬이 필요하지 않은 경우 새 기능을 비활성화하고 올바르게 계산된 reducer 수를 가져오도록 `hive.optimize.sort.dynamic.partition.threshold` 속성을 `-1`로 설정하는 것이 좋습니다. 이 문제는 OSS Hive에서 [HIVE-22269](https://issues.apache.org/jira/browse/HIVE-22269) 일부로 수정되었으며 Amazon EMR 6.10.0에서 수정되었습니다.