Hive 2020.1へのバージョンアップについて
カスタマーレプレゼンタティブチームの関川 誠です。
今回は、Hiveのバージョンアップについてご案内いたします。トレジャーデータでは、長くご利用いただいていたHive 0.13の後継バージョンとして、2020年10月にHive 2020.1を正式版としてリリースいたしました。Hive 2020.1では、Hive 0.13のMapReduceに対し、より効率的な処理を可能とするTezを採用、すでに多くのお客様で処理性能の向上を体感いただいております。一方で、Hive 0.13とHive 2020.1では、ANSI準拠の強化もあり、一部Syntax等の修正が必要なケースがあります。
書き換えが必要となるクエリの例、変更点は、以下の通りです。
- CROSS JOINにQuery Hintが必須
- 予約語のescape (“)が必須に
- TDへのINSERTにDecimalをDouble変換が必要
- Decimal型精度の統一
- v columnの利用廃止
- Insert into<table name>構文のサポート
詳細は、こちらにドキュメントを公開しておりますので、ご参照ください。バージョン移行にあたり、SQLの書き換え不要なケースもありますが、既存クエリの動作確認をお願いいたします。
動作確認方法
移行方法は、1) Syntaxチェックのみを行う、2) 処理結果のデータで比較する2つの方法をご紹介しています。詳細はこちらをご参照ください。
- Syntaxチェックのみを行うでは、EXPLAINをQueryの前に記載することで、Queryのチェックのみで、本番環境に影響を与えずに非互換のチェックが可能です。
- 処理結果のデータで比較するでは、一時テーブルを用意し、そちらにHive 2020.1での処理結果を書き出すことで、Hive 0.13とのデータでの比較が可能です。
コンソールでHive 2020.1を利用するには、図の通り、対象QueryのTypeをHive 2020.1 (Stable)に変更します。また、データを書き出して比較する場合は、INSERT INTO (または INSERT OVERWRITE)で一時テーブルに書き出しを行ってください。
CLI/Workflowでは、オプションでエンジンバージョンを指定することでHive 2020.1による実行が可能です。この場合も書き出してデータの比較を行う場合は、一時テーブルを指定する必要があります。
engine_version=“stable”
Hive 0.13の廃止について
トレジャーデータでは、2021年12月末2022年4月15日でのHive 0.13の廃止を予定しています。大変お手数ですが、それまでの期間にテストを完了いただければ幸いです。なお、この期間、CLI/Workflowでengine_versionを未指定の場合は、Hive 0.13で処理は実行されるため、テスト後はHive 2020.1を指定されておかれることをお勧めします。
ご不明の点は担当のカスタマーサクセス、またはサポートまでお問い合わせください。