翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR 4.x での Hive の使用に関する考慮事項
このセクションでは、Amazon EMR 4.x リリースバージョンで Hive バージョン 1.0.0 を使用する場合と Amazon EMR 5.x リリースバージョンで Hive 2.x を使用する場合に考慮すべき違いについて説明します。
ACID トランザクションはサポート外
Amazon EMR 4.x リリースバージョンでの Hive は、4.x リリースバージョンの使用時に Amazon S3 に保存された Hive データとの ACID トランザクションをサポートしていません。Amazon S3 でトランザクションテーブルを作成しようとすると、例外が発生します。
Amazon S3 でのテーブルへの読み取りと書き込み
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
Amazon EMR 4.x リリースバージョンでの Hive は Log4j を使用します。バージョン 5.0.0 以降では、Log4j 2 がデフォルトです。これらのバージョンでは、異なるログ設定が必要になる場合があります。詳細については、Apache Log4j 2
MapReduce がデフォルトの実行エンジン
Amazon EMR 4.x リリースバージョンでの Hive では、デフォルトの実行エンジンとして MapReduce を使用します。Amazon EMR バージョン 5.0.0 以降では、Tez がデフォルトです。これにより、ほとんどのワークフローでパフォーマンスが向上します。
Hive 認可
Amazon EMR 4.x リリースバージョンでの Hive では、HDFS の Hive 認可
Amazon S3 での Hive ファイルマージ動作
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
に設定されているとマージタスクが常にトリガされます。