一、hive分区
分区操作属于hive操作的重量级操作
分区在hdfs上物理结构是目录
非严格模式:no~
表数据删除方法对比说明:
drop,delete,truncate
联系:都可以达到删除数据的目标。
区别:Drop:把数据和元数据全删除;
delete:按照条件删除数据;(只会删除实体数据)
Truncate:截断数据,元数据不动,状态数据会删掉。
大数据环节中写入:
1.是否要求输出目录存在;
2.写模式,是覆盖写,还是增量写
二、DQL
1,各种join使用,Union
- inner join
将左表和右表满足联接条件的数据,全部查询出来
- left outer join
以左表为主,将左表数据全部保留,右表没有关联上数据字段置成NULL
- right outer join 同理
- full outer join
- 没有关联上数据字段全部置成NULL
- full join=inner join+left join+right join
- union [all]
-
将所有表数据,完全叠加在一起,不去重。(没有all则为去重)
要求:所有表的字段和类型完全一致。
-
注意hive中子查询必学给与别名
2,内置函数(系统函数)
使用help解决一个函数不知道怎么用的问题:
desc function{方法}
常用函数:
count:行数
IF( Test Condition, True Value, False Value ) :判断
COALESCE( value1,value2,... )返回函数第一个不为空的值:
case...when :判断
split:将字符串拆分成数组。
explode:表成生成函数
lateral view:与explode连用制表
三、自定义函数
1.UDF(user defined function)
2.流程
- 自定义一个java类
- 继承UDF类
- 约定俗成的重写evaluate方法
- 打包类所在项目成一个all-in-one的jar包并上传到hive所在机器(hdfs dfs -put)
- 在hive中执行add jar操作,将jar加载到classpath中。(add jar /路径)
- 在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数(
create temporary function 方法名 as 方法类路径)
- hive sql中像调用系统函数一样使用udf函数
3.加入maven配置:
4.0.0 com.tianliangedu.course TlHadoopCore0.0.1-SNAPSHOT UTF-8 UTF-8 nexus-aliyun Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public org.apache.hadoop hadoop-client2.7.4 provided org.apache.hive hive-cli1.2.1 provided TlHadoopCore maven-assembly-plugin jar-with-dependencies make-assembly package assembly maven-compiler-plugin 2.3.2 1.7 1.7 UTF-8



