Hive进阶_汇总
===========================================================================
第2章 Hive数据的导入
使用Load语句执行数据的导入: LOAD 导入语句到数据仓库的表当中。
load data [local] inpath 'filepath' [overwrite]
into table tablename [partition (partcoll=val1, partcal2=val2...)]
explain: local是从本地导入,无local则默认从HDFS导入,overwrite是否覆盖表中存在的数据。 本地:
导入一个文件
load data local inpath 'localFilePath' into table tableName;
load data local inpath 'localFilePath' into table tableName partition(gender='M');
导入一个目录下的文件,覆盖原有数据
load data local inpath 'localDirPath' overwrite into table tableName; HDFS:
导入HDFS文件
load data inpath 'localFilePath' into table tableName; ===================
使用Sqoop进行数据的导入 (1)下载: http://www-us.apache.org/dist/sqoop/1.4.6/
(2)解压: # tar -zxvf sqoop-1.4.6.bin__hadoop-0.23.tar.gz
(3)配置:
# export HADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.7.3/
# export HADOOP_COMMON_HOMW=/usr/local/src/hadoop-2.7.3/
连接oracle数据库时,ojdbc.jar 放到sqoop的lib目录下。
(4)进入脚本执行目录下: cd sqoop-1.4.6.bin__hadoop-0.23/bin
(5)执行脚本:
./sqoop import --connect jdbc:oracle:thin:@IP:port:dbName --username user --password password --table tableName --columns '' -m 1 --target-dir '/sqoop/emp' ===========================================================================
第3章 Hive的数据查询
Hive的数据查询_简单查询和fetch task
过滤
排序
set hive.groupby.orderby.position.alias=true; ===========================================================================
第4章 Hive的内置函数
Hive数学函数
select round(45.926,2),round(45.926,1),round(45.926,0),round(45.926,-1),round(45.926,-2);
===================
Hive字符函数
select lower('Hello World'), upper('Hello World');
select length('Hello World'),length('你好');
select concat('Hello','World');
select substr('Hello World',3);
select substr('Hello World',3,4);
select lpad('abc',10,'*'),lpad('abc',10,'*');
===================
Hive收集函数和转换函数
size
cast
select size(map(1,'Tom',2,'Mary'));
select cast(1 as bigint);
select cast(1 as float);
select cast('2015-04-10' as date);
===================
Hive日期函数
to_date
year
month
day
weekofyear
datediff
date_add
date_sub
select to_date ('2015-04-23 11:23:11');
select year('2015-04-23 11:23:11'),month('2015-04-23 11:23:11'),day('2015-04-23 11:23:11');
select weekofyear('2015-04-23 11:23:11');
select datediff('2015-04-23 11:23:11','2014-04-23 11:23:11');
select date_add('2015-04-23 11:23:11',2),date_sub('2015-04-23 11:23:11',2);
===================
Hive条件函数
coalesce:从左到右返回第一个不为null的值。
case... when...:
case a when b then c [when d then e]* [else if] end
i.e.
select ename,job,sal,
case job when 'persident' then sal+1000,
when 'manager' then sal+800,
else sal+400
end
from emp;
===================
Hive聚合函数和表生成函数
聚合函数
count
sum
min
max
avg
表生成函数
explode
select count(*),sum(sal),max(sal),min(sal),avg(sal) from emp;
select explode(map(1,'Tom',2,'Mary',3.'Mike'));
===========================================================================
第5章 Hive的表连接
等值连接
select e.empno, d.deptno
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;
===================
外连接
(取交集)
select d.deptno, d.dname, 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;
===================
自连接
select e.ename,b.ename
from emp e, emp b
where e.mgr=b.empno; ===========================================================================
第6章 Hive的子查询
集合中如果含null数据,不可使用not in, 可以使用in.
hive只支持where和from子句中的子查询
主查询和自查询可以不是同一张表 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 *
from emp e
where e.deptno not in
(
select e1.mgr from emp e1 where e1.mgr is not null
); ===========================================================================
第7章 Hive的客户端操作
启动远程客户端 # hive --service hiveserver2
获取连接-〉创建运行环境-〉执行HQL-〉处理结果-〉释放资源 ===========================================================================
第8章 开发Hive的自定义函数
自定义UDF需要继承org.apache.hadoop.hive.ql.UDF,实现evaluate函数,evaluate函数支持重载。
进入hive客户端,添加jar包
hive> add jar /dir/.jar
创建临时函数,指向jar包中的类
hive> create temporary function <函数名> as 'java类名';
select <函数名> from table;
drop temporary function <函数名>;
Hive进阶_汇总的更多相关文章
- Hive进阶_开发Hive的自定义函数
Hive中的自定义函数简介 (1) 在类中创建自定义函数.自定义UDF需要继承'org.apache.hadoop.hive.ql.exec.UDF',实现evaluate函数,evaluate函数支 ...
- Hive进阶_内置函数
Hive数学函数 round : 四舍五入 ceil : 向下取整 floor : 向上取整 ),),),),); Hive字符函数 select lower('Hello World'), uppe ...
- 全面系统Python3入门+进阶_汇总
https://coding.imooc.com/class/136.html#Anchor 全面系统Python3入门+进阶-1-1 导学 全面系统Python3入门+进阶-1-2 Python的特 ...
- TypeScript完全解读(26课时)_汇总贴
ECMAScript 6 入门:http://es6.ruanyifeng.com/ 官网:http://www.typescriptlang.org/ 中文网:https://www.tslang. ...
- iOS进阶_地图上定位的标志——大头针
一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...
- Hive进阶(下)
Hive进阶(下) Hive进阶(下) Hive的表连接 等值连接 查询员工信息:员工号.姓名.月薪.部门名称 1.select e.empno,e.ename,e.sal,d.dname2.from ...
- Hive进阶(上)
Hive进阶(上) Hive进阶(上) 执行数据导入 使用Load语句 语法: 1.LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE ...
- Java进阶资料汇总
Java经过将近20年的发展壮大,框架体系已经丰满俱全:从前端到后台到数据库,从智能终端到大数据都能看到Java的身影,个人感觉做后台进要求越来越高,越来越难. 为什么现在Java程序员越来越难做,一 ...
- python学习两月总结_汇总大牛们的思想_值得收藏
下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...
随机推荐
- 分享知识-快乐自己:Mybatis缓存机制
论缓存机制: 1):mybatis 提供了缓存机制减轻数据库压力,提高数据库性能. 2):mybatis 的缓存分为两级:一级缓存.二级缓存 3):一级缓存是SqlSession级别的缓存,缓存的数据 ...
- 破解 Navicat Premium 12
一.下载 若文件百度云链接失效,请发邮件给博主:1766211120@qq.com 1.安装文件下载 v12.0.11(x64)版本下载地址如下 链接:https://pan.baidu.com/s/ ...
- 通过在classpath自动扫描方式把组件纳入spring容器中管理。
前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿.spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component.@Service.@Controller ...
- poj-2336 Ferry Loading II(dp)
题目链接: Ferry Loading II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3946 Accepted: ...
- kettle 设置变量
以下只是本人在使用过程中一些经验,可能有误解不对的地方,希望大家指正. 这个控件可以在job中调用,也可以在transformation中使用.下面将分别说明在两个不同任务中调用时的使用方法和需要注意 ...
- linux命令学习笔记-md5sum 命令详解
前言 在网络传输.设备之间转存.复制大文件等时,可能会出现传输前后数据不一致的情况.这种情况在网络这种相对更 不稳定的环境中,容易出现.那么校验文件的完整性,也是势在必行的. 使用说明 md5sum命 ...
- TTY,Console以及Terminal
TTY可以理解是一种终端显示.可以在/dev文件夹看到多个tty开头的文件,可以通过alt+Fn(n=1~6)来进行切换.这个是不是和GUI场景下的多个Terminal窗口是一致的呢? 伪TTY是指一 ...
- bzoj 3073 [Pa2011]Journeys ——线段树优化连边
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3073 建两棵线段树,一棵孩子向父亲连边,是走出去的:一棵父亲向孩子连边,是走进来的. 注意第 ...
- BZOJ4016:[FJOI2014]最短路径树问题
浅谈树分治:https://www.cnblogs.com/AKMer/p/10014803.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem. ...
- bzoj 2946 公共串 —— 后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946 建出 n-1 个后缀自动机一起跑呗. 代码如下: #include<cstdio ...