Apache Hiveは、Hadoop上で動作するオープンソースのデータウェアハウスシステムです。SQLに似たクエリ言語を使用することで、大規模な分散ストレージ上のデータを容易に集計、分析することができます。Javaで複雑なMapReduceの処理を書くことなく、ビッグデータを直感的に扱えるのが特徴です。
Apache Hiveとは
Apache Hiveとは、Apache Hadoop上に構築された、分散ストレージ内の大規模なデータセットをクエリ・分析するためのデータウェアハウス(DWH)ソフトウェアです。
詳しく解説
Hiveは、Facebookによって開発され、後にApacheソフトウェア財団に寄贈されました。主な役割は、Hadoop Distributed File System(HDFS)などの分散ファイルシステムに保存されている非構造化または半構造化データを、リレーショナルデータベースのような表構造として定義し、SQL風の言語であるHiveQLを用いて解析することです。実行時、HiveQLはMapReduce、Tez、Sparkなどの分散処理フレームワークの実行ジョブへと自動変換されます。これにより、大規模なバッチ処理を効率的かつ容易に実行でき、データレイクに蓄積されたビッグデータの加工や前処理、AIモデルの学習データの作成に広く用いられています。
具体例・使われ方
具体的な利用例として、Webサービスの膨大なアクセスログを毎晩バッチ処理で集計し、AIの予測モデルに投入するための特徴量を生成するプロセスが挙げられます。例えば、「SELECT user_id, COUNT(*) FROM log_table GROUP BY user_id」のような直感的なSQL構文を実行するだけで、Hadoopクラスタ全体に分散された何テラバイトものデータから自動的に特定データを集計し、機械学習用のデータセットを迅速に構築できます。
似た用語との違い
混同されやすい「Apache Spark」との違いとして、Apache Hiveがディスクアクセスをベースにしたデータウェアハウスおよびバッチ処理システムであるのに対し、Apache Sparkはインメモリ処理を基本とした高速な分散処理エンジンである点が挙げられます。また、従来のRDBMSと比較すると、RDBMSがリアルタイムなトランザクション処理を得意とするのに対し、Hiveは大量データのバッチ分析に特化しており、数秒以内の低遅延応答には適していません。
注意点
注意点として、Apache Hiveはトランザクション処理やリアルタイムなアドホッククエリには不向きである点が挙げられます。クエリの開始から実行完了までにオーバーヘッドが発生するため、ミリ秒単位の応答が求められるシステムには適しません。また、データの構造を読み込み時に適用する方式を採用しているため、不正な形式のデータが混入した際にエラーの検知が遅れる可能性があります。