Hive基础



desc t2;


本地数据
load data local inpath '/root/data/sutdent01.txt' 
HDFS中的文件
load data inpath 




Hive中的大部分查询会转换成mapreduce作业进行


select *  from table 不会,因为是全表查询 select 字段 会执行


distinct 合并相同的


简单查询的Fetch Task,执行简单查询语句(没有排序、函数等等),不会执行MapReduce作业
开启方式:
修改hive-site.xml文件




explain select。。。  打印出HQL语句的 执行计划(从右往左,从下往上)
查询中使用过滤:
%代表任意字符串
_代表任意字符
要过滤带下划线的字符必须使用转义字符 %\\_% 


排序:
order by sal(薪水) 默认升序  降序加desc order by sal desc


设置一下 可以使用序号代表查询语句中的列 select 列1, 列2 ,列3 from table order by 1        此时1代表 列1


含有空值NULL情况下升序默认排在最前,降序默认排在最后




数学函数
四舍五入
select round(45.926,2)  
ceil向上取整 floor向下取整
select ceil(45.9)      46
select floor(45.9)     45


字符函数
转大小写
select lower('Hello World'),upper('Hello World')


字符数
select length('Hello World'),length('你好')
 11 2


concat拼加字符串


substr(a,b)求子串 从a中的第b位开始取,取右边所有字符
substr(a,b,c)求子串 从a中的第b位开始取,取c个字符
select substr('Hello World',3);    llo World
select substr('Hello World',3,4);  llo


lpad()左填充
rpad 右填充 


收集函数
size
select size(map(<key,value>,<key,value>));
select size(map(1,'tom',2,'mary'));
2
转换函数
cast
select cast(1 as float);
1.0
select cast('2015-04-10' as date);
2015-04-10


日期函数
to_date返回日期部分
weekofyear 返回在一年中第几个星期
datediff相差多少天
select date_add('2015-04-23 11:23:11',2)
date_sub


条件函数
select coalesce
从左到右返回第一个不为null的值


case ...when.. 条件表达式  在HQL中实现if else语句
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
a = b 就执行c, a= d就执行e,否则执行f


select ename,job,sal, case job when 'PRESIDENT' then sal+1000 when 'MANAGER' then sal+800 else sal+400 end


聚合函数
count sum min max avg 
表生成函数
select explode(map(1,'tom',2,'mary'))
Map集合单独生成一行
1 tom
2 mary




desc命令格式:
    desc 表名;
同样
    show columns from 表名;
也能获取数据表结构。


举例如下:
mysql> desc MyClass;
mysql> show columns from MyClass;


等值连接
select e.epmno,e.ename,e.sal,d.dname
from emp e,dept d
where e.deptno = d.deptno;
不等值连接
select e.epmno, e.ename,e.sal.s.grade
from emp e ,sagrade s 
where e.sal between s.losal and s.hisal;






自连接:通过别名将同一张表当做多张表连接




org.apache.hadoop.hive.ql.exec.UDF;
继承UDF接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值