hive 动态分区 默认就是严格模式
动态分区数据导入
在严格模式下不指定partition
set hive.exec.dynamic.partition.mode= strict ;
insert into table dept_part3
select dname, loc, depno from dept_part;
非严格模式需要指定partition 不然会报错
set hive.exec.dynamic.partition.mode= nonstrict ;
insert into table dept_part3 partition(deptno) select dname , loc, deptno from dept_part;
collect_list 不去重
collect_set 去重
select collect-set(deptno) from emp;
结果: [20,30,10]
函数类型及特点 :
UDF: 输入一行输出一行 转化函数
UDAF: 输入多行输出一行 聚合函数
UDTF: 输入一行输出多行 炸裂函数
查看函数
show functions
查看函数详情
desc function year;
连接字符串不限制类型,udf函数
select concat(ename,‘-’ , job ,‘-’ , deptno) from emp;
连接字符串,字段类型必须是字符串, UDF函数
select concat_ws(‘-’,ename,job ,cast(deptno as string)) from emp;
原始数据是这样: 投币;点赞 ;转发 ;一键三联
用split 函数 这样数据就转换成了数组
select split(operator , “,”) from emp_operator;
因为有中括号 所以是数组
[“投币”,“点赞”,“转发”,''一键三联"]
select explode(split(operator, “,”) )from emp_operator ;
侧面试图的引入:
lateral view 包装成一个列
分解动作3: 创建侧面试图把name字段关联上去:
select name ,opitem from emp_operator
lateral view explode( split(operator, “,”) ) tmp as opitem ;
tmp 是 explode 这段的别名
opitem 是lateral view 这段,这列的别名
lateral 侧面的,横向的
late 勒特肉