Apache Drillを試してみた

今回はApache Drillを試してみました。

Apache Drillとは

SQLクエリエンジンの一つです(ImpalaやPrestoと同じ)
特徴の一つとしてスキーマレスなデータに対してクエリの実行が可能です
あとはSQLライクではなくANSI SQLであることも特徴の一つです
詳しくは こちらを参照ください

前回インストールしたSandBox版にDrillが入っていたのでこちらを使います。

MapR SandBox版を試してみた - すだちっこのOrdinary Days

# yum list installed | grep drill
mapr-drill.noarch     0.5.0.275270-1    @/mapr-drill-0.5.0.275270-1.noarch

下記のチュートリアルをやっていきます。
Apache Drill Tutorial

セットアップ

ブラウザからhttp://IP address:8047にアクセスします。

f:id:kashigeru:20141110221743j:plain

ストレージタブをクリックします。
ここから各データソースへのコネクションを設定します。
今回はHiveと接続するのでHiveのUpdateをクリックし下記設定になっているか確認します。

Hiveメタストアのポート9083に接続する設定。

{
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "thrift://localhost:9083",
    "hive.metastore.sasl.enabled": "false"
  }
}

SandBoxでポート9083が開いているか確認

# netstat -ltn | grep 9083
tcp        0      0 0.0.0.0:9083                0.0.0.0:*                   LISTEN

これでクエリが実行出来る準備が整いました。
実際はSandBoxをインストールしたらデフォルトでDrill実行出来るのですが。。。

クエリ実行

CLIにアクセスします。

# sqlline
sqlline version 1.1.6
0: jdbc:drill:>

データベース確認

0: jdbc:drill:> show databases;
+-------------+
| SCHEMA_NAME |
+-------------+
| hive.default |
| dfs.default |
| dfs.logs    |
| dfs.root    |
| dfs.views   |
| dfs.clicks  |
| dfs.data    |
| dfs.tmp     |
| sys         |
| maprdb      |
| cp.default  |
| INFORMATION_SCHEMA |
+-------------+
12 rows selected (1.808 seconds)

Hiveを使用

0: jdbc:drill:> use hive;
+------------+------------+
|     ok     |  summary   |
+------------+------------+
| true       | Default schema changed to 'hive' |
+------------+------------+
1 row selected (0.129 seconds)

テーブル確認

0: jdbc:drill:> show tables;
+--------------+------------+
| TABLE_SCHEMA | TABLE_NAME |
+--------------+------------+
| hive.default | orders     |
+--------------+------------+
1 row selected (2.502 seconds)
0: jdbc:drill:>

クエリ実行

0: jdbc:drill:> select * from orders limit 10;
+------------+------------+------------+------------+------------+-------------+
|  order_id  |   month    |  cust_id   |   state    |  prod_id   | order_total |
+------------+------------+------------+------------+------------+-------------+
| 67212      | June       | 10001      | ca         | 909        | 13          |
| 70302      | June       | 10004      | ga         | 420        | 11          |
| 69090      | June       | 10011      | fl         | 44         | 76          |
| 68834      | June       | 10012      | ar         | 0          | 81          |
| 71220      | June       | 10018      | az         | 411        | 24          |
| 61287      | June       | 1001       | nj         | 104        | 134         |
| 68553      | June       | 10021      | ca         | 117        | 67          |
| 68109      | June       | 10022      | tx         | 337        | 10          |
| 68526      | June       | 10025      | mi         | 11         | 63          |
| 69362      | June       | 10028      | tx         | 430        | 65          |
+------------+------------+------------+------------+------------+-------------+
10 rows selected (2.211 seconds)

CLIからぬけます。

0: jdbc:drill:> !quit
Closing: org.apache.drill.jdbc.DrillJdbc41Factory$DrillJdbc41Connection

GUIからもクエリ実行出来ます。

f:id:kashigeru:20141110222711j:plain

f:id:kashigeru:20141110222703j:plain

ただクエリが間違っているときにErrorの返りが遅いのであまり使えないかもです。

まとめ

ANSI SQLスキーマレスなデータに対してクエリの実行など個人的には魅力的です。
ただHiveとのコネクションがHive0.12.*のみなのでCDH5.2で構築したHiveに接続出来なかったのが残念です。
Drill 0.7でHive 0.13.xに対応するようですヽ(=´▽`=)ノ
今回はここまで(ノ´▽`)ノ{+++THANK YOU+++}ヽ(´▽`ヽ)

Hadoop 第3版

Hadoop 第3版

広告を非表示にする