

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR 4.x での Hive の使用に関する考慮事項
<a name="emr-Hive-4x"></a>

このセクションでは、Amazon EMR 4.x リリースバージョンで Hive バージョン 1.0.0 を使用する場合と Amazon EMR 5.x リリースバージョンで Hive 2.x を使用する場合に考慮すべき違いについて説明します。

## ACID トランザクションはサポート外
<a name="emr-Hive-acid-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive は、4.x リリースバージョンの使用時に Amazon S3 に保存された Hive データとの ACID トランザクションをサポートしていません。Amazon S3 でトランザクションテーブルを作成しようとすると、例外が発生します。

## Amazon S3 でのテーブルへの読み取りと書き込み
<a name="emr-Hive-s3table-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive は、一時ファイルを使用せずに直接 Amazon S3 に書き込むことができます。これにより、パフォーマンスは向上しますが、結果として Amazon S3 の同じテーブルに同じ Hive ステートメントで読み取りと書き込みを行うことができません。回避策は、HDFS に一時テーブルを作成して使用することです。

次の例は、複数の Hive ステートメントを使用して Amazon S3 内のテーブルを更新する方法を示しています。ステートメントは、Amazon S3 にある `my_s3_table` という名前のテーブルに基づいて、HDFS に `tmp` という名前の一時テーブルを作成します。これにより、Amazon S3 のテーブルは一時テーブルの内容で更新されます。

```
CREATE TEMPORARY TABLE tmp LIKE my_s3_table;
INSERT OVERWRITE TABLE tmp SELECT ....;
INSERT OVERWRITE TABLE my_s3_table SELECT * FROM tmp;
```

## Log4j vs. Log4j 2
<a name="emr-Hive-log4j-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive は Log4j を使用します。バージョン 5.0.0 以降では、Log4j 2 がデフォルトです。これらのバージョンでは、異なるログ設定が必要になる場合があります。詳細については、[Apache Log4j 2](http://logging.apache.org/log4j/2.x/) を参照してください。

## MapReduce がデフォルトの実行エンジン
<a name="emr-Hive-tez-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive では、デフォルトの実行エンジンとして MapReduce を使用します。Amazon EMR バージョン 5.0.0 以降では、Tez がデフォルトです。これにより、ほとんどのワークフローでパフォーマンスが向上します。

## Hive 認可
<a name="emr-Hive-authz-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive では、HDFS の [Hive 認可](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)をサポートしますが、EMRFS および Amazon S3 はサポートしません。Amazon EMR クラスターは、デフォルトで認可が無効な状態で実行されます。

## Amazon S3 での Hive ファイルマージ動作
<a name="emr-Hive-filemerge-4x"></a>

Amazon EMR 4.x リリースバージョンでの Hive は、`hive.merge.mapfiles` が `true` の場合、マップのみのジョブの最後で小さいファイルをマージします。マージは、ジョブの平均出力サイズが `hive.merge.smallfiles.avgsize` の設定未満の場合にのみトリガーされます。最終出力パスが HDFS 内にある場合は、Amazon EMR Hive でも動作はまったく同じです。ただし、出力パスが Amazon S3 にある場合、`hive.merge.smallfiles.avgsize` パラメータは無視されます。その場合、`hive.merge.mapfiles` が `true` に設定されているとマージタスクが常にトリガされます。