Apache Hive

Apache Hive はHadoopの上に構築されたデータウェアハウス 構築環境であり、データの集約・問い合わせ・分析を行う。Apache Hiveは当初はFacebookによって開発されたが、その後Netflixのようにさまざまな団体が開発に参加し、またユーザーとなったUse Case Study of Hive/Hadoop 。 Hive はAmazon Web ServicesのAmazon Elastic MapReduceにも含まれているAmazon Elastic MapReduce Developer Guide。

特徴と機能
Apache HiveはHadoop互換のファイルシステム（たとえばAmazon S3)に格納された大規模データセットの分析を行う。使用には、map/reduceを完全にサポートしたSQLライクな「HiveQL」という言語を用いる。クエリの高速化のため、ビットマップインデックスを含めたインデクス機能も実装しているWorking with Students to Improve Indexing in Apache Hive。

標準設定では、Hiveはメタデータを組み込みApache Derbyデータベースに格納するが、オプションとしては別に用意したクライアント・サーバデータベース（たとえばMySQL）に格納させることもできる。

現在、Hiveがサポートするファイルフォーマットは3種類あり、それらはTEXTFILE, SEQUENCEFILE および RCFILEであるFacebook's Petabyte Scale Data Warehouse using Hive and Hadoop。

Hiveが提供する機能には他には次のようなものがあるHive – The next generation data warehouse:
 高速化のためのインデックス作成
 別の種類のストレージタイプ。たとえばプレーンテキスト・RCFile・HBaseなど
 クエリ実行時のセマンティックチェック時間を大幅に短縮するため、メタデータを関係データベース管理システム (RDBMS) に格納する機能
 Hadoop環境に格納された圧縮データを扱う機能
 日付型・文字列型を扱ったり他のデータ操作を可能とする組み込みユーザ定義関数（UDF)。組み込み関数で用意されていない機能もユーザが自作UDFを作成することで対応することが可能
 SQLライクなクエリ言語(Hive QL)。これは内部的にMap/Reduceジョブに変換される

HiveQL
HiveQLはSQLに基づいているものの、厳密にはSQL-92をフルサポートしてはいない。たとえばSQLにない複数テーブルインサートやcreate table as selectは可能だが、インデクスに関しては限定的なサポートに留まっているまた、外部結合はLEFTしかできない・JOINのON節での不等式やBetweenの使用に制限がある・timestamp型はUNIX TIMEなので1970年以前や2037年以後の日付が使えない・CSVから文字列フィールドをLOAD DATAする場合、ENCLOSED指定が出来ないので二重引用符等は事前に削除する必要がある・その場合でも明示的にNULLを指定したい場合には「\N」という特殊な文字列を入れておく必要がある、などがあり使用には注意を要する（日本語訳者による追記。いずれもバージョン0.9.0の場合）。また、HiveQLはトランザクションやマテリアライズドビューの機能はもたず、副問い合わせのサポートも限定的である。Hive Language Manual。

内部的には、コンパイラがHiveQL文をMap/Reduceジョブの有向非巡回グラフに変換し、それがHadoopに渡され実行されるHive A Warehousing Solution Over a MapReduce Framework。

関連項目
 Apache Pig
 Apache Sqoop
 Jaql

参照

外部リンク

Hive A Warehousing Solution Over a MapReduce Framework - Original paper presented by Facebook at VLDB 2009
Using Apache Hive With Amazon Elastic MapReduce (Part 1) and , presented by an AWS Engineer

Hive
Category:クラウドコンピューティング
Category:Javaでプログラムされた自由ソフトウェア
Category:Metaのソフトウェア
Category:オープンソースソフトウェア