Apache Hive

Apache Hiveは、Hadoopを基盤とするデータウェアハウス構築環境であり、大規模なデータセットに対する集約、クエリ、分析を効率的に行うためのツールです。元々はFacebookによって開発されましたが、その後、Netflixをはじめとする多くの組織が開発と利用に携わっています。また、Amazon Web ServicesのAmazon Elastic MapReduceにも組み込まれています。

特徴と機能



Apache Hiveは、Hadoop互換のファイルシステム(例えばAmazon S3)に保存された大規模なデータセットを分析するために使用されます。データ操作には、MapReduceを完全にサポートしたSQLライクな言語である「HiveQL」を利用します。

主な機能


HiveQL: SQLに似たクエリ言語であり、データの抽出、変換、分析を容易にします。内部的にはMapReduceジョブに変換され実行されます。
インデックス機能: クエリの高速化のために、ビットマップインデックスを含むインデックス作成をサポートしています。
メタデータ管理: 標準設定では組み込みのApache Derbyデータベースにメタデータを格納しますが、MySQLなどの外部クライアント・サーバデータベースを使用することも可能です。
多様なファイルフォーマット: TEXTFILE、SEQUENCEFILE、RCFILEといった複数のファイル形式をサポートしています。
ストレージタイプ: プレーンテキスト、RCFile、HBaseなど、さまざまなストレージタイプに対応しています。
RDBMSへのメタデータ格納: クエリ実行時のセマンティックチェック時間を短縮するために、メタデータを関係データベース管理システムに格納できます。
圧縮データの処理: Hadoop環境に格納された圧縮データを扱うことができます。
組み込みUDF: 日付型や文字列型を扱うための組み込みユーザー定義関数(UDF)を提供します。また、ユーザーがカスタムUDFを作成して機能を拡張することも可能です。

HiveQLの詳細



HiveQLはSQLをベースにしていますが、SQL-92の完全な互換性はありません。例えば、SQLにはない複数テーブルへのインサートや、SELECT結果を元にしたテーブル作成(create table as select)が可能です。しかし、インデックスに関しては限定的なサポートに留まり、トランザクションやマテリアライズドビュー、副問い合わせのサポートも限られています。

HiveQLのクエリは、コンパイラによってMapReduceジョブの有向非巡回グラフに変換され、Hadoopに渡されて実行されます。

関連技術



Apache Pig: 大規模データ分析のための別のプラットフォーム。
Apache Sqoop: RDBMSとHadoop間のデータ転送ツール。
Jaql: データ処理のためのクエリ言語。

参考資料



公式ウェブサイト: https://hive.apache.org/
VLDB 2009での[Facebook]]によるオリジナル論文: [Hive A Warehousing Solution Over a MapReduce Framework
AWSエンジニアによるAmazon Elastic MapReduceでのApache Hiveの利用に関するYouTubeビデオ:
Part 1
Part 2

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。