32
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apache Drillに感動した(2つのJSONファイルをSQLでJOINしてみた)

Last updated at Posted at 2015-04-02

Apache Drillを試してみたがとてもいい!

##とりあえずこれをみて感動して欲しい。

2つのJSONファイルがあります。

/opt/drill/test1.json
{"id": 1, "name": "foo"}
{"id": 2, "name": "bar"}
/opt/drill/test2.json
{"id": 1, "point": 100}
{"id": 2, "point": 200}

Apache-Drillのシェルから下記SQLを入力すると

0: jdbc:drill:zk=local> SELECT test1.*, test2.point FROM 
. . . . . . . . . . . >   dfs.`/opt/drill/test1.json` test1
. . . . . . . . . . . >   JOIN dfs.`/opt/drill/test2.json` test2 ON (test1.id = test2.id);
+------------+------------+------------+
|     id     |    name    |   point    |
+------------+------------+------------+
| 1          | foo        | 100        |
| 2          | bar        | 200        |
+------------+------------+------------+
2 rows selected (0.253 seconds)

SQLでJSONがJOINできた!感動!

そして、なんとDrillはJSONだけでなく、CSV,TSV,Parquetも扱える。
Hadoopファイルシステムにアクセスできるし、HBaseやHive、MongoDBに接続することもできる。
つまり1クエリで色々なデータソースのデータをテーブルと見なしてJOINしてあれやこれやしたりできるわけです!感動です!

そして簡単!ここまでなら一行も設定ファイルをいじる必要なくできました!
Apache-Drillのサイトからtar.gzを落としてきて解凍するだけ!

感動であたまがフットーしちゃいそうです!

##蛇足。HiveとImpalaで分散システムを諦めかけた話し。
将来的にログ解析で分散システムが必要になりそうだったので半年くらい前に初めてHadoop周りに手を出した。
SQLライクなクエリでHadoopにアクセスできるHiveが便利そうだと思って使ってみたが、非常にパフォーマンスが悪く愕然とした。
データが少なくてもクエリの実行にすぐに数十秒以上かかってしまう。解析システムのデバッグにも一苦労だ。
そしてパフォーマンスを求めてImpalaに手を出してみたが、JSONをうまく扱えないし、設定も面倒だし、採用は断念した。
どうしても必要な状況になるまで分散システムを念頭に置いたシステム作りは止めた方がいいのかな。そう思っていた。

が、もしかしたら、Apache Drillが僕の救世主になってくれるかもしれない。

##その他
EC2でDrillを試したい方は下記を見ておいてください。
Amazon EC2(Amazon Linux) でApache Drill 0.8.0が動かなくて困った

32
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?