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_reference3.[WHERE where_condition]4.[GROUP BY col_list]5.[CLUSTER BY col_list6.    |[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,其他4002.3.select ename,job.sal,4.       case job when ‘PRESIDENT‘ then sal+10005.                when ‘MANAGER‘ then sal+8006.                else sal+4007.       end8.from emp;

当然上面写法是为了好看,在hive把换行符去掉即可

聚合函数和表生成函数

  • 聚合函数

    • count:求个数
    • sum:求和
    • min:求最小值
    • max:求最大值
    • avg:求平均
  • 表生成函数
    • explode

      例如:

1.select explode(map(1,‘Tom‘,2,‘Mary‘,3,‘Mike‘));

执行:

1.1     Tom2.2     Mary3.3     Mike
时间: 2024-10-19 19:07:57

Hive进阶(上)的相关文章

Hive进阶(下)

Hive进阶(下) Hive的表连接 等值连接 查询员工信息:员工号.姓名.月薪.部门名称 1.select e.empno,e.ename,e.sal,d.dname2.from emp e,dept d3.where e.deptno=d.deptno; 不等值连接 查询员工信息:员工号.姓名.月薪.工资级别 1.select e.empno,e.ename,e.sal,s.grade2.from emp e,salgrade s3.where e.sal between s.losal a

数据仓库----Hive进阶篇 一

数据仓库--hive进阶篇二 一.数据的导入 1.使用Load语句执行数据的导入 1.语法: 其中(中括号中表示可加指令): LOCAL:表示指定的文件路径是否是本地的,没有则说明是HDFS上的文件路径. OVERWRITE:表示覆盖表中的已有数据. PARTITION ():如果是向分区表中导入数据的话需要指定分区. 2.实例: (1).无分区情况: 其中的'/root/data'可以是路径也可以是文件: 路径表示把该路径下的所有文件都导入到表中: 文件表示只把当前文件导入到表中. (2).有

Hive 进阶

两种情况下不走map-reduce: 1. where ds >' ' //ds 是partition 2. select * from table //后面没有查询条件,什么都没有 1.建表 CREATE TABLE sal( id INT, name STRING, salary INT ) partitioned by (city string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; 1.1 修

Hive学习之五 《Hive进阶—UDF操作案例》 详解

hive—UDF操作 udf的操作过程: 在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数. 下面就以下面课题为例: 课题:统计每个活动的PV和UV 一.Java通过正则表达式,截取标题名称. 以链接,截取标红的字符串. http://cms.yhd.com/sale/vtxqCLCzfto?tc=ad.0.0.17280-32881642.1&tp=1.1.36.9.1.LEffwdz-10-35RcM&ti=ZX8H 为例. 核心代码如下, imp

Spark入门实战系列--5.Hive(上)--Hive介绍及部署

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Hive介绍 1.1 Hive介绍 Hive是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据.它是Facebook 2008年8月开源的一个数据仓库框架,提供了类似于SQL语法的HQL语句作为数据访问接口,Hive有如下优缺点: l  优点: 1.Hive 使用类SQL 查询语法, 最大限度的实现了和SQL标准的兼容,大大降低了传统数据分析人员学习的曲线: 2.使用JDBC

hive进阶 技巧

1.日期格式转换(将yyyymmdd转换为yyyy-mm-dd) select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm-dd') 2..hive去掉字段中除字母和数字外的其它字符 select regexp_replace(a, '[^0-9a-zA-Z]', '') from tbl_name 3.hive解析json字段 content字段存储json {"score":"100"

文件系统进阶(上)

一.文件系统类型 Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap 光盘:iso9660 Windows:fat32, ntfs Unix: FFS(fast), UFS(unix), JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2(oracle) 分布式文件系统:ceph, moosefs, mogilefs, fastdfs,glusterfs, Lu

Hive进阶_Hive数据查询

简单查询和fetch task 简单查询:   简单查询的 fetch task 功能,从HDFS拉取,不用map reduce. 前两种配置,当前session有效.修改hive-site.xml永久有效. 查询中使用过滤 在查询中使用排序 排序使用别名时要开启使用别名模式:set hive.groupby.orderby.position.alias=true;

4.安装hive

下载安装包并解压安装元数据库配置hive添加hvie环境变量修改hive-env.sh修改hive配置文件初始化metastore使用hive cli配置hivemestore配置hiveserver2连接使用beeline服务器配置和客户端配置 本系列的前几篇目录都是快速安装环境,因为我在家需要一套环境来学习.更详细的教程请看. 下载安装包并解压 到http://hive.apache.org/downloads.html 下载安装包,这里选择2.1.1版本. 以hive用户解压到/opt/下