自己对hive的一些见解
- hive是一个基于Hadoop的数据仓库工具。
- hive的底层是hdfs和MapReduce。
- hive有三种连接方式CLI web JDBC
- hive不能多用户同时访问。
- hive依赖于jdk和hadoop
Hive的四种使用方式
-
hive交互shell 切换到hive的家目录下的bin目录 使用 /hive命令。
-
Hive JDBC服务 (参考java Jdbc 连接mysql)
-
hive启动一个服务器,来对外提供服务
-
hive命令
导入数据
把本地的数据导入到hive中 test是数据库
原本是一个空白的表
从hdfs集群导入数据
创建表加上格式
ROW FORMAT DELIMITED : 行格式分隔
FIELDS TERMINATED BY ’,’ : 字段之间使用逗号分隔
COLLECTION ITEMS TERMINATED BY ‘,’ : 集合(就是这的数据)使用逗号分隔
MAP KEYS TERMINATED BY ‘:’ : 键值对使用冒号分隔
LINES TERMINATED BY ‘\t’ : 记录之间使用换行符分隔
如果我的数据没有用逗号隔开
结果
有逗号隔开
结果:因为之前表中有数据,下面的才是传入的数据
创建表
-
内部表
直接创建,跟mysql一样
内部表被删除的时候它的元数据,和源数据都会被清除掉。 -
外部表
外部表被删除的时候,它的源数据还是会保存在hdfs上的,它的元数据会被删除。
因为当外部表创建的时候它的数据存放位置就是hdfs。 -
分区表
-
分桶表
查看表结构
DESCRIBE [EXTENDED|FORMATTED] table_name
复制表的结构,但不复制数据 关键字(like)
原先的数据表
查看结构,进行复制
查看复制的表
查看复制的表结构
复制表的结构,并且复制数据 关键字(as)
这个是错误的,为什么呢
As关键字和like关键字用法不一样
as关键字需要跟查询语句
查看表数据
查看表结构
结构和数据和被复制的表一样。
(未完待续…)