hive基础
- hive 是数据仓库,用来分析历史数据
- 目的是为了方便不会java的人员也可以使用MR分析数据。
- hive基于hdfs,所有数据存储在hdfs上,hive的所有擦操作都是hdfs或者MR操作
hive搭建
- 本地模式,采用内存数据库derby,几乎不用
- 单用户模式
- 多用户模式
- hive的搭建主要是mysql的配置信息以及hdfs存储数据的路径
hiveSql
- DDL
- 建表:Create/Drop/Truncate Table
- 分区:Alter Table/Partition/Column
- DML
- 加载数据 Loading files into tables
- insert into (执行满、效率低)
- load (执行快、但是会将所有数据导入到同一目录)
- from table1 insert into table2 select col1,col2 …..
- 加载数据 Loading files into tables
hive分区
- 为了提高查询效率,将不同的数据文件存放到不同的目录,查询时可以只查询部分目录,分区设计要跟业务相结合(粒度不能过细,也不能过粗)
- alter table tablename add partition (col=val)(添加分区的字段在定义表的时候应该已经给出;
- alter table tablename drop partition (col=val)(删除会将符合条件的分区全部删除)
Serde、beeline、jdbc
- Serde:序列化与反序列化,定义了数据读取的格式规范(正则)
- beeline:提供了另一种访问hive的客户端方式,与hiveserver2一起使用
- 使用beeline是所有命令前都要加!
- hive默认不进行用户名密码校验
- jdbc:必须访问hiveserver2:10000
hive函数
- udf:一进一出
- udaf:多进一出(聚合函数)
- udtf:一进多出(explode)
- 自定义函数
- 利用Java代码实现,继承UDF方法
- 实现evaluate方法
- 将程序打包到hive 所在的 服务器
- 进入hive 添加jar文件,add jar ‘/root/xxxjar’
- Create temporary function tm as 'com.sxt.XXX';