Hive 基础及安装
Hive 操作(一)
hive 操作(二)——使用 mysql 作为 hive 的metastore
hive 操作(三)——hive 的数据模型
hive 操作(四)
注:
(1)hive的映射工具metastore:
- SQL ⇒ MapReduce Job
- 表(SQL) ⇒ 文件/文件夹(hdfs)
- 字段 ⇒ 文件中的列
Hive 的 SQL 操作
(1)进入hive
[root@hadoop0 ~]# hive
退出为
quit
hive> quit;
(2)基本的类 MySQL 的操作:
hive> show databases; OK default Time taken: 2.456 seconds, Fetched: 1 row(s) hive> use default; OK Time taken: 0.289 seconds hive> show tables; OK Time taken: 0.149 seconds
(3)DDL 操作
hive> create table t1(id string); OK Time taken: 2.048 seconds # mysql 并不支持string的数据类型 hive> show tables; OK t1 Time taken: 0.037 seconds, Fetched: 1 row(s)
因为最终 hive (使用映射工具——metastore)是将 SQL 中创建的表转换为HDFS文件系统中的文件(文件夹),那么到底有没有转换过去呢?
我们在浏览器端输入:hadoop0:50070,进入 hadoop 集群的namenode节点,然后点击【Browse the filesystem】进入 hadoop 文件系统(File System):
我们跳转到/user/hive/warehouse
,会发现我们在hive创建的表t1
以文件(文件夹)的形式进行存储。
hive 在 hdfs 中的默认位置是/user/hive/warehouse,是由配置文件hive-site.xml(由mv $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
而来) 中属性 hive.metastore.warehouse.dir 决定的。出于简洁性的考虑,我们不妨将hive.metastore.warehouse.dir
修改为/hive
,系统会自动创建。
默认配置的含义在于,你可以重新配置;
经过一系列的SQL操作(尤其是创建操作),我们重新进入hive/bin
,会发现其下多了,derby.log
和metastore_db
两个文件,derby 数据库在哪里运行就在哪里创建(derby.log和metastore_db)。也即我们不可在不同的位置执行 hive 操作,否则会发生不一致的情况。