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接口