一 hive当中所支持的数据类型
基本类型
原始数据类型
- 整型
- TINYINT — 微整型,只占用1个字节,只能存储0-255的整数。
- SMALLINT– 小整型,占用2个字节,存储范围–32768 到 32767。
- INT– 整型,占用4个字节,存储范围-2147483648到2147483647。
- BIGINT– 长整型,占用8个字节,存储范围-2^63到2^63-1。
- 布尔型
- BOOLEAN — TRUE/FALSE
- 浮点型
- FLOAT– 单精度浮点数。
- DOUBLE– 双精度浮点数。
- 字符串型
- STRING– 不设定长度。
复杂类型
- Structs:一组由任意数据类型组成的结构。比如,定义一个字段C的类型为STRUCT {a INT; b STRING},则可以使用a和C.b来获取其中的元素值;
- Maps:和Java中的Map没什么区别,就是存储K-V对的;
- Arrays:就是数组而已;
三种部署方式
1.本地模式,元数据存在本地deby
2.单用户模式,存到mysql
3.远程服务器模式
二 DDL DML
DDL 数据定义语言
DML 数据操作语言
要学会看官方文档。
创建表
1.定义字段
2.定义序列化和反序列化,指定分隔符
external 指定外部表,需要指定数据存放的位置,指定hdfs的路径,用location。不指定外部表,就是在配置文件里面的那个路径。
内部表,外部表
内部表和外部表的区别在于外部表在创建时会指定数据存放目录,创建的时候要加external,删除的时候内部表会连同数据一起删除,而外部表只删除元数据,实际数据不会删除。
因为内部表数据是由hive维护,而外部表不是。
创建表还有的方式
还有一种方式可以将子查询直接放入新表。
create table … as select … 将查询结果数据放到目标表。
还有一个
create table … like… 只是元数据复制一份
分区:
hive分区,举个栗子,加入按天分区,每天产生的日志存储在对应每一天的目录里面。
也可以按照业务类型分区,加入我们按性别分区,
记住: 分区字段不能在表的列名里面。
如果我们差指定分区的呢?直接用where 就行
修改分区:
分区是可以添加的 add
删除分区:drop ,它可能会造成数据丢失,外部表不会,内部表会。
beeline
之前我们是直接操作hive,
连接beeline 有两种方式
regex
我们可以通过正则对数据进行处理。比如我们爬虫爬网页,还会爬下来很多标签。
hive 函数
有自带的函数,也有自定义函数,自定义函数可以自己定义函数。 可以通过java代码来实现。