この項目では、データウェアハウス構築環境について説明しています。Javaアプリケーションフレームワークについては「Apache Beehive 」をご覧ください。
Apache Hive はHadoop の上に構築されたデータウェアハウス 構築環境であり、データの集約・問い合わせ・分析を行う[ 1] 。Apache Hiveは当初はFacebook によって開発されたが、その後Netflix のようにさまざまな団体が開発に参加し、またユーザーとなった[ 2] [ 3] 。 Hive はAmazon Web Services のAmazon Elastic MapReduce にも含まれている[ 4] 。
Apache HiveはHadoop互換のファイルシステム(たとえばAmazon S3 )に格納された大規模データセットの分析を行う。使用には、map/reduce を完全にサポートしたSQL ライクな「HiveQL」という言語を用いる。クエリの高速化のため、ビットマップインデックス を含めたインデクス 機能も実装している[ 5] 。
標準設定では、Hiveはメタデータを組み込みApache Derby データベースに格納するが、オプションとしては別に用意したクライアント・サーバデータベース(たとえばMySQL)に格納させることもできる[ 6] 。
現在、Hiveがサポートするファイルフォーマットは3種類あり、それらはTEXTFILE, SEQUENCEFILE および RCFILE である[ 7] [ 8] 。
Hiveが提供する機能には他には次のようなものがある[ 9] :
高速化のためのインデックス作成
別の種類のストレージタイプ。たとえばプレーンテキスト・RCFile・HBaseなど
クエリ実行時のセマンティックチェック時間を大幅に短縮するため、メタデータを関係データベース管理システム (RDBMS) に格納する機能
Hadoop環境に格納された圧縮データを扱う機能
日付型・文字列型を扱ったり他のデータ操作を可能とする組み込みユーザ定義関数(UDF)。組み込み関数で用意されていない機能もユーザが自作UDFを作成することで対応することが可能
SQLライクなクエリ言語(Hive QL)。これは内部的にMap/Reduceジョブに変換される
HiveQLはSQLに基づいているものの、厳密にはSQL-92 をフルサポートしてはいない。たとえばSQL にない複数テーブルインサート やcreate table as select は可能だが、インデクスに関しては限定的なサポートに留まっている[ 10] 。また、HiveQLはトランザクション やマテリアライズドビュー の機能はもたず、副問い合わせのサポートも限定的である。[ 11] [ 12] 。
内部的には、コンパイラ がHiveQL文をMap/Reduceジョブの有向非巡回グラフ に変換し、それがHadoopに渡され実行される[ 13] 。
^ Venner, Jason (2009). Pro Hadoop . Apress . ISBN 978-1-4302-1942-2
^ Use Case Study of Hive/Hadoop
^ OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix" - YouTube
^ Amazon Elastic MapReduce Developer Guide
^ Working with Students to Improve Indexing in Apache Hive
^ Lam, Chuck (2010). Hadoop in Action . Manning Publications . ISBN 1-935182-19-6
^ Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop
^ Yongqiang He, Rubao Lee, Yin Huai, Zheng Shao, Namit Jain, Xiaodong Zhang and Zhiwei Xu. “RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems ” (PDF). 4,Nov. 2012閲覧。
^ Hive – The next generation data warehouse
^ また、外部結合はLEFTしかできない・JOINのON節での不等式やBetweenの使用に制限がある・timestamp型はUNIX TIMEなので1970年以前や2037年以後の日付が使えない・CSVから文字列フィールドをLOAD DATAする場合、ENCLOSED指定が出来ないので二重引用符等は事前に削除する必要がある・その場合でも明示的にNULLを指定したい場合には「\N」という特殊な文字列を入れておく必要がある、などがあり使用には注意を要する(日本語訳者による追記。いずれもバージョン0.9.0の場合)
^ White, Tom (2010). Hadoop: The Definitive Guide . O'Reilly Media . ISBN 978-1-4493-8973-4
^ Hive Language Manual
^ Hive A Warehousing Solution Over a MapReduce Framework