とりあえず試してみたい方は3以降を実施していただければと思います。
1. やりたいこと
beelineを触って、hiveクエリの練習をしたいと考えていました。
ただ、docker hubを漁ってみたけれども、お手軽そうなものが見当たらなかったので、下記の方のblog等を参考にdockerのイメージを作成してみました。
- [HiverServer2セットアップしJDBC経由でHiveQLを実行する](hive-server2 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/zookeeper/KeeperException)
2. hiveを実行可能なイメージを作成
以下のDockerfileをご覧いただければと思います。
ハマったポイントがあり、簡易ながらも共有します。
-
apt-get install hive-server2 zookeeper
をしても、/usr/lib/hive/lib/zookeeper.jarが生成されない。(正確には存在しないsymlinkが生成される。。)で、hive-server2を起動するとClassNotFoundExceptionが発生しました。。私は、jaistからバイナリ配布のzookeeper-3.4.6のtar.gzをダウンロードしてそこからjarを取得しました。 -
apt-get install zookeeper-server
がこける。cdhさんのチュートリアルが間違っているような気がしました。。 -
hive-site.xml
で、hive.support.concurrency
のtrue/falseでクエリ実行速度がだいぶ違う。ここはお試しいただければと。(現在、内部動作等については確認中です)
3. docker-composeを利用して、コンテナを起動する
以下にdocker-composeを格納しました。
起動方法は、ymlファイルの存在するディレクトリに移動して、
docker-compose -f docker-compose.yml up -d
となります。
4. docker execを利用してコンテナに入り、beelineを試してみる
- docker exec でコンテナにはいる(コンテナ名は事前にお調べください)
docker exec -it ${container_name} /bin/bash
- beelineコンソールに入る
beeline
- localhostのhiveに接続して、テーブル作成、テーブル一覧表示を実行する
!connect jdbc:hive2://localhost:10000 hive hive org.apache.hive.jdbc.HiveDriver
-- dummy table作成し、1レコード追加
create table dual (dummy string);
insert into table dual select count(*) from dual;
-- sample table作成し、データ登録が実施できるか確認してみる
create table sample (key string);
insert into sample select key from sample;
show tables;
- 一部の標準出力結果など
0: jdbc:hive2://localhost:10000> show tables;
+-----------+--+
| tab_name |
+-----------+--+
| dual |
| sample |
+-----------+--+
0: jdbc:hive2://localhost:10000> select * from sample;
+-------------+--+
| sample.key |
+-------------+--+
| 1 |
+-------------+--+
1 row selected (0.06 seconds)
ちょっと不明点が多いので、休日中に調べつつ、hive自体のクエリキャッチアップも進めていくことにします。