beelineを利用してhiveでデータベースを作成してみる

[前回の投稿](http://qiita.com/letusfly85/items/b4e5fc67c9566765b794)で、hiveのdockerコンテナを作成しました。

今回は、databaseの作成を実施しました。

参考

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/AlterDatabase


# 1. beelineでhiveserver2に接続

```bash
# コンテナにdocker-xecで/bin/bashで入ってから、beelineと入力

$ docker exec -it dockercompose_hiveserver2_1 /bin/bash
root@6a715b5d374e:/# beeline

# hiveserver2に接続
beeline> !connect jdbc:hive2://localhost:10000 hive hive org.apache.hive.jdbc.HiveDriver
```

# 2. databaseを作成してみる

```sql
0: jdbc:hive2://localhost:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+
1 row selected (1.086 seconds)

0: jdbc:hive2://localhost:10000> create database if not exists erdrepo;
No rows affected (0.149 seconds)
0: jdbc:hive2://localhost:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| erdrepo        |
+----------------+--+
2 rows selected (0.023 seconds)
```

`if not exists`構文も利用できるようです。

# 3. OS側のファイルを確認してみる

```bash
root@6a715b5d374e:/# ls -la /user/hive/warehouse/
total 20
drwxr-xr-x 5 hive root 4096 Nov  5 02:30 .
drwxr-xr-x 4 hive root 4096 Nov  2 16:46 ..
drwxr-xr-x 2 hive hive 4096 Nov  5 02:30 erdrepo.db
```

`/user/hive/warehouse`の下に、erdrepo.dbが生成されたことが確認できます。

# 4. queryからも確認できないのか。

できます。　`describe database`構文。

```sql
0: jdbc:hive2://localhost:10000> describe database erdrepo;
+----------+----------+---------------------------------------+-------------+-------------+-------------+--+
| db_name  | comment  |               location                | owner_name  | owner_type  | parameters  |
+----------+----------+---------------------------------------+-------------+-------------+-------------+--+
| erdrepo  |          | file:/user/hive/warehouse/erdrepo.db  | hive        | USER        |             |
+----------+----------+---------------------------------------+-------------+-------------+-------------+--+
```

# 5. databaseに属性（properties）を付与する。

```sql
alter database erdrepo set db properties ('used_system' = 'my cloud');
1 row selected (0.024 seconds)

0: jdbc:hive2://localhost:10000> describe database extended erdrepo;
+----------+----------+---------------------------------------+-------------+-------------+-------------------------+--+
| db_name  | comment  |               location                | owner_name  | owner_type  |       parameters        |
+----------+----------+---------------------------------------+-------------+-------------+-------------------------+--+
| erdrepo  |          | file:/user/hive/warehouse/erdrepo.db  | hive        | USER        | {used_system=my cloud}  |
+----------+----------+---------------------------------------+-------------+-------------+-------------------------+--+
1 row selected (0.029 seconds)
```

parametersを表示させるには、describe構文にextendedが必要な模様。


# 6. databaseにコメントを付与する

あとから、コメントできない。。。ぽい。。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/AlterDatabase

諦めて今日は再作成する

```sql
0: jdbc:hive2://localhost:10000> drop database erdrepo;
No rows affected (0.205 seconds)
0: jdbc:hive2://localhost:10000> create database erdrepo comment 'erd objects management tool' with dbproperties ('used_system' = 'my cloud' );
No rows affected (0.039 seconds)
0: jdbc:hive2://localhost:10000> describe database extended erdrepo;
+----------+------------------------------+---------------------------------------+-------------+-------------+-------------------------+--+
| db_name  |           comment            |               location                | owner_name  | owner_type  |       parameters        |
+----------+------------------------------+---------------------------------------+-------------+-------------+-------------------------+--+
| erdrepo  | erd objects management tool  | file:/user/hive/warehouse/erdrepo.db  | hive        | USER        | {used_system=my cloud}  |
```

# 7. MySQLの構文もみてみた。

http://dev.mysql.com/doc/refman/5.7/en/create-database.html

`create database`で、commentとかdbpropertiesみたいなものは付与できない様子。DBが変わるといろいろ違ってきますね。

---

今日はここまでとします。

他のデータベースってコメントつけたりできるんだっけ。とか、ストレージ領域として、s3n,hdfs,maprfsもあるのかー、みたいなとこも気になります。