-
简单查询的优化,不会生成mapreduce作业,简单查询速度更快查看全部
-
多种方式导入查看全部
-
oracle导入hive中查看全部
-
select e.ename from emp e where e.deptno in (select d.deptno from dept d where d.dname = 'SALES' or d.dname = 'ACCOUNTING');查看全部
-
自连接:通过表的别名将同一张表视为多张表查看全部
-
select d.deptno, d.dname, count(e.empno) ---count(e.empno)聚合函数 计数 from emp e, dept d where e.deptno = d.deptno group by d.deptno, d.dname; -- 没有出现在聚合函数中的列 等值连接:不成立,员工表中不存在的部门但是部门表中存在 应该修改为外连接的形式: 通过外连接可以将对连接条件不成立的记录仍然包含在最后的结果中。 左外连接: 右外连接: select d.deptno, d.dname, count(e.empno) from emp e right outer join dept d on(e.deptno = d.deptno) group by d.deptno, d.dname;查看全部
-
表连接:转换成MR任务 支持: 等值连接(若连接条件是=) select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno --- = 等值连接 不等值连接(> < !=) select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s -- 涉及两张表 where e.sal between s.losal and s.hisal 外连接、自连接查看全部
-
条件函数 coalesce:从左到右返回第一个不为null的值 select comm,sal,coalesce(comm, sal) from emp; case...when select ename, job, sal, case job when 'PRESIDENT' then sal+1000 when 'MANAGER' then sal+800 else sal+400 end from emp;查看全部
-
日期函数 to_date : 取出一个字符串中日期的部分 year month day weekofyear datediff : 返回日期相差的天数 date_add date_sub查看全部
-
收集函数:size(map(<key,value>,<key,value>)) 转换函数:cast 进行数据类型的转换 select cast(1 as float) select cast('2014-12-10' as date)查看全部
-
字符函数: lower upper length concat substr trim lpad -- 左填充 rpad select lower(‘hello World’) select length('Hello World'), length('你好‘) *concat select concat('Hello','World'); *substr 求字符串的子串 substr(a, b): 从a中,第b位开始取,取右边所有的字符 select sub('Hello World', 3); substr(a, b, c): 从a中,第b位开始取,取c个字符 select substr('Hello World', 3, 4); *trim 去掉前后的空格 *lpad 左填充 *rpad 右填充 select lpad('abdc', 10, '*'), rpad('abdc', 10, '*');查看全部
-
hive的函数:内置函数和自定义函数 内置函数: 数学函数:round、ceil、floor select round(45.926, 2),round(45.926, 1),round(45.926, 0),round(45.926, -1),round(45.926, -2) round(45.926, 2) 表示对45.926进行四色五入,保留两位小数; round(45.926, -2)查看全部
-
在查询中使用排序: select empno, ename, sal from emp order by sal; -- 默认升序 排序操作,是属于高级操作,都转换成MR操作 select empno, ename, sal from emp order by sal desc; --降序 order by 后跟内容:列、表达式、别名、序号 select empno, ename, sal, sal*12 from emp order by sal*12 desc; -- 年薪的表达式 select empno, ename, sal, sal*12 annsal from emp order by annsal; -- 别名 select empno, ename, sal, sal*12 from emp order by 4 desc; -- 4代表年薪sal*12 序号,但需要设置参数: set hive.groupby.orderby.position.alias=true;(使用序号的前提条件) select empno, ename, sal, comm from emp order by comm; ---null是如何排序的? 升序null排在前面,反之--查看全部
-
在查询中使用过滤:where条件 selec * from emp where deptno=10; --- 开启了fecth task 功能 select * from emp where enmae='KING'; select * from emp where enmae='king'; --- 严格区分字符串的大小写的 select * from emp where deptno=10 and sal<2000; --- 使用and连接 具体的执行过程:执行计划--->explain 读的顺序从右往左 从下往上 ---模糊查询 select empno,ename,sal from emp where name like 'S%'; select empno,ename,sal from emp where name like '%\\_%'; -- _代表任意的字符,本身需要用转义字符查看全部
-
select *from emp; ---并没有转成mapreduce查询,把hdfs中对应的文件直接加载 select empno,ename,sal from emp; --- 转换层mapreduce任务 不能对表进行全表扫描 需要对数据进行分析 速度慢的原因(1)和机器的配置有关(2)hive操作数据仓库,在海量数据下。。。 支持算术表达式: select empno,ename,sal,sal*12 from emp; select empno,ename,sal,sal*12, comm,sal*12+comm from emp; 涉及到NULL值,表达式中含有NULL值,整个表达式都是NULL值 把奖金为空(NULL)转换为0--> select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp; 查询奖金为NULL的员工: select * from emp where comm is null; 判断一个值是否为NULL,不能用= != 用is 使用distinct 去掉重复的记录 select distinct depno from emp; select distinct depno,job from emp; //组合去重 Fetch Task功能: 不使用MR作业来查询,hive命令行中执行:set hive.fetch.task.conversion = more; 配置hive的参数并开启hive:hive --hiveconf hive.fetch.task.conversion = more 修改xml配置,参数如图所示:hive-site.xml查看全部
举报
0/150
提交
取消