Hive进阶(上)
Hive进阶(上)
Hive进阶(上)
执行数据导入
使用Load语句
语法:
1.LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)]
说明:
[LOCAL]:从操作系统中的一个目录中进行导入,如果不写LOCAL则为hdfs的数据导入
INPATH:为导入的路径,后面指明文件目录路径,如不指明文件名,则将目录下的所有文件进行导入
[OVERWRITE]:是否要覆盖表中已经存在的数据
INTO TABLE:后面跟表名,如果导入的是个分区表,还可以通过PARTITION指明导入到哪个分区当中
数据查询排序
语法:
1.SELECT [ALL | DISTINCT] select_expr,select_expr,...
2.FROM table_reference
3.[WHERE where_condition]
4.[GROUP BY col_list]
5.[CLUSTER BY col_list
6. |[DISTRIBUTE BY col_list][SORT BY col_list]
7. |[ORDER BY col_list]]
8.[LIMIT number]
DISTRIBUTE BY:指定分发器(Partitioner),多Reducer可用
使用where执行过滤
使用order by执行排序,要降序操作只需要在后面加上desc,若想在查询的时候使用列序号,可以执行set hive.groupby.orderby.position.alias=true;
简单查询的Fetch Task功能
在此状态下就不会开启Map Reduce作业,从Hive0.10.0版本开始支持
配置方式:
set hive.fetch.task.conversion=more;hive --hiveconf hive.fectch.task.conversion=more- 修改hive-site.xml文件(永久生效)
Hive的内置函数
数学函数
1.--四舍五入
2.select round(45.926,2),round(45.926,1),round(45.926,0),round(45.926,-1),round(45.926,-2);
执行结果:
1.45.93 45.9 46.0 50.0 0.0
1.--向上取整
2.select ceil(45.926);
执行结果:
1.46
1.--向下取整
2.select floor(45.926);
执行结果:
1.45
字符函数
大小写:
1.select lower('Hello World'),upper('Hello World');
执行结果:
1.hello world HELLO WORLD
字符数:
1.select length('Hello World'),length('你好');
执行结果:
1.11 2
拼加字符串:
1.select concat('Hello',' World')
执行结果:
1.Hello World
求子串:
substr(a,b):从a中,第b位开始取,取右边所有的字符
1.select substr('Hello World',3);
执行结果:
1.llo World
substr(a,b,c):从a中,第b位开始取,取c个字符
1.select substr('Hello World',3,4);
执行结果:
1.llo
去掉前后的空格:trim()
左填充:lpad()
右填充:rpad()
1.select lpad('abcd',10,'*'),rpad('abcd',10,'*');
执行结果:
1.******abcd abcd******
收集函数和转换函数
- 收集函数size()
1.select size(map(<key,value>,<key,value>...))
- 转换函数cast()
1.select cast(1 as float);
日期函数
- to_date :取出一个字符串中日期的部分
- year :取出一个日期中的年
- month :取出一个日期中的月
- day :取出一个日期的日
- weekofyear :返回一年中的第几周
- datediff :两个日期之间的相隔天数
- date_add :日期之上加上几天
- data_sub :日期之上减去几天
条件函数
coalesce:从左到右返回第一个不为null的值case...when...:条件表达式
1.CASE a WHEN b THEN c [WHEN d THEN e]*[ELSE f] END
例如:
1.给员工涨工资,总裁1000,经理800,其他400
2.
3.select ename,job.sal,
4. case job when 'PRESIDENT' then sal+1000
5. when 'MANAGER' then sal+800
6. else sal+400
7. end
8.from emp;
当然上面写法是为了好看,在hive把换行符去掉即可
聚合函数和表生成函数
- 聚合函数
- count:求个数
- sum:求和
- min:求最小值
- max:求最大值
- avg:求平均
- 表生成函数
- explode
例如:
- explode
1.select explode(map(1,'Tom',2,'Mary',3,'Mike'));
执行:
1.1 Tom
2.2 Mary
3.3 Mike
Hive进阶(上)的更多相关文章
- Hive进阶(下)
Hive进阶(下) Hive进阶(下) Hive的表连接 等值连接 查询员工信息:员工号.姓名.月薪.部门名称 1.select e.empno,e.ename,e.sal,d.dname2.from ...
- Docker入门与进阶(上)
Docker入门与进阶(上) 作者 刘畅 时间 2020-10-17 目录 1 Docker核心概述与安装 1 1.1 为什么要用容器 1 1.2 docker是什么 1 1.3 docker设计目标 ...
- Spark入门实战系列--5.Hive(上)--Hive介绍及部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Hive介绍 1.1 Hive介绍 月开源的一个数据仓库框架,提供了类似于SQL语法的HQ ...
- Hive学习之六 《Hive进阶— —hive jdbc》 详解
接Hive学习五 http://www.cnblogs.com/invban/p/5331159.html 一.配置环境变量 hive jdbc的开发,在开发环境中,配置Java环境变量 修改/etc ...
- Hive学习之五 《Hive进阶—UDF操作案例》 详解
hive—UDF操作 udf的操作过程: 在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数. 下面就以下面课题为例: 课题:统计每个活动的PV和UV 一.Java ...
- Hive 进阶
两种情况下不走map-reduce: 1. where ds >' ' //ds 是partition 2. select * from table //后面没有查询条件,什么都没有 1.建表 ...
- hive进阶 技巧
1.日期格式转换(将yyyymmdd转换为yyyy-mm-dd) select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm ...
- 大数据学习(10)—— Hive进阶
前面提到了Hive的知识点非常零散,我不知道该怎么把这些知识点分类,跟SQL关系没那么大的就放在这一篇吧. Hive Serde 参考Hive Serde Serde是啥 Serde是序列化和反序列化 ...
- concat_ws 使用在hive spark-sql上的区别
concat_ws() 在hive中,被连接对象必须为string或者array<string>,否则报错如下: hive> select concat_ws(',',unix_ti ...
随机推荐
- golang Aes
package models import ( "bytes" "crypto/aes" "crypto/cipher" "err ...
- Android_实现静默安装和卸载应用
转:http://www.cnblogs.com/ondream/archive/2012/04/13/2446138.html 前段时间做了一个批量安装卸载应用程序的小应用,由于安装卸载应用程序的部 ...
- 【原】从一个bug浅谈YUI3组件的资源加载
篇前声明:为了不涉及业务细节,篇内信息统一以某游戏,某功能代替 前不久,某游戏准备内测客户端,开发人员测试过程中发现某功能突然不灵了,之前的测试一切ok,没有发现任何异常,第一反应是,游戏内浏览器都是 ...
- android上传json与服务器交互
http://www.2cto.com/kf/201403/289328.html http://www.tuicool.com/articles/FZJR3eB
- mysql错误:Error Code: 1175. You are using safe update mode and you tried to update a table……
今天遇到一个mysql错误: Error Code: . You are using safe update mode and you tried to update a table withou ...
- vb combobox 用法问题总结
问题一 combobox 通过type类型,如下代码,通过选取name名称(改变combobox的名称)得到 其Id Type User id As Integer userName As Strin ...
- 【转】vs2010下创建webservice
题记:学了六个月java一直想做java,没想到进了.NET项目组,还是VB2012,还有WebService,压力山大,这篇纯粹看看多图的效果,版主不要怪罪. Visual Studio 2010默 ...
- SQL Server 统计信息的创建与更新
前期准备: 普通表.临时表:它两会有统计信息. 表变量: 不会有统计信息. ---------------------------------------------------- ...
- PBOC2.0安全系列之—脱机认证之动态数据认证(DDA)
动态数据认证: 一,什么是动态数据认证(DDA) 由于上篇<< PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)>>已经对静态数据认证部分做了详细的分析,一些基本知识 ...
- Delphi XE6 通过JavaScript API调用百度地图
参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...