Hue(the Hadoop UI)では、ほぼ最初のバージョンからImpalaをサポートしており、ブラウザ内において高速な対話形式のクエリを提供します。もしImpalaについて良く知らなければ、Hadoop用最速SQLエンジンのドキュメントをチェックすることをお勧めします。
Impalaアプリ
ImpalaはほとんどのHive SQLと互換性があるので、HiveとImpalaアプリケーションの両方でエピソード1(英語)のクエリを比較していきます。この比較は100%厳密ではありませんが、よくあるケースとして、どんなことが起こっているかのデモになっていることに気付かれるでしょう。
HueアプリでImpalaを使用することは、コマンドラインツールのimpala-shellでImpalaを使用するよりも、いろいろな意味で簡単です。例えば、テーブル名、データベース、カラム(列)や組み込み関数は自動補完され、構文をハイライトすることでクエリの潜在的な誤りを表示します。複数のクエリや選択したクエリの一部分を、エディタ上から実行することができます。パラメータ化されている(変数を使う)クエリをサポートしているので、ユーザーがサブミットする時に、値を入力を求めるプロンプトを表示させることができます。Impalaのクエリは保存可能であり、ユーザー間で共有したり削除でき、その後間違った場合に備えてゴミ箱から復元できます。
ImpalaはHiveと同じメタストアを使用するので、メタストアアプリでテーブルをブラウズできます。エディタからデータベースをドロップダウンして選択することも可能です。サブミットした後はクエリの進捗とログがレポートされ、クエリの結果は無限にスクロールさせてブラウズしたり、ブラウザでデータをダウンロードすることができます。
クエリの速度比較
簡単に入手できるHueのサンプルから始めてみましょう。これらはとても小さいデータですが、Impalaの電光石火のスピードと、Hiveによって生成された一連の非効率なMapReduceジョブを示します。
HueでHiveとImpalaのサンプルがインストールされていることを確認し、その後、それぞれのアプリの「保存されたクエリ」に移動し、‘Sample: Top salaries’のクエリをコピーしてからサブミットします。
その後、Yelpデータに戻ります。エピソード1のクエリを両方のアプリで実行します:
SELECT r.business_id, name, SUM(cool) AS coolness
FROM review r JOIN business b
ON (r.business_id = b.business_id)
WHERE categories LIKE '%Restaurants%'
AND `date` = '$date'
GROUP BY r.business_id, name
ORDER BY coolness DESC
LIMIT 10
繰り返しますが、Impalaのアーキテクチャーと最適化の恩恵をご覧いただけるでしょう。
まとめ
この記事は、Impalaのクエリ実行は、どのように対話的にデータ分析をしているかということと、Hiveのバッチアーキテクチャーより生産性が高いということを説明しています。結果は速やかに返ってきます。Yelpデータのケースでは、瞬時です。ImpalaとHueの組み合わせは、高速な分析のための秘訣でしょう。さらに、HueのPython APIは、独自のクライアントをビルドしたい場合に再利用することが可能です。
Cloudera’s demo VMとそのHadoopチュートリアルは、最初にImpalaとHueを始めるのにとても良い方法です。 近日公開されるブログの投稿では、Impalaでのより効率的なファイルフォーマットの使用方法について説明する予定です。
いつものように、何かあればhue-userメーリングリスト(英語)や、@gethueに気軽にコメントして下さい。次回は、OozieバンドルでHadoopチュートリアルのシーズン2(英語)です。