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

      例如:
1.select explode(map(1,'Tom',2,'Mary',3,'Mike'));

执行:

1.1     Tom
2.2 Mary
3.3 Mike

Hive进阶(上)的更多相关文章

  1. Hive进阶(下)

    Hive进阶(下) Hive进阶(下) Hive的表连接 等值连接 查询员工信息:员工号.姓名.月薪.部门名称 1.select e.empno,e.ename,e.sal,d.dname2.from ...

  2. Docker入门与进阶(上)

    Docker入门与进阶(上) 作者 刘畅 时间 2020-10-17 目录 1 Docker核心概述与安装 1 1.1 为什么要用容器 1 1.2 docker是什么 1 1.3 docker设计目标 ...

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

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Hive介绍 1.1 Hive介绍 月开源的一个数据仓库框架,提供了类似于SQL语法的HQ ...

  4. Hive学习之六 《Hive进阶— —hive jdbc》 详解

    接Hive学习五 http://www.cnblogs.com/invban/p/5331159.html 一.配置环境变量 hive jdbc的开发,在开发环境中,配置Java环境变量 修改/etc ...

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

    hive—UDF操作 udf的操作过程: 在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数. 下面就以下面课题为例: 课题:统计每个活动的PV和UV 一.Java ...

  6. Hive 进阶

    两种情况下不走map-reduce: 1. where ds >' ' //ds 是partition 2. select * from table //后面没有查询条件,什么都没有 1.建表 ...

  7. hive进阶 技巧

    1.日期格式转换(将yyyymmdd转换为yyyy-mm-dd) select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm ...

  8. 大数据学习(10)—— Hive进阶

    前面提到了Hive的知识点非常零散,我不知道该怎么把这些知识点分类,跟SQL关系没那么大的就放在这一篇吧. Hive Serde 参考Hive Serde Serde是啥 Serde是序列化和反序列化 ...

  9. concat_ws 使用在hive spark-sql上的区别

    concat_ws() 在hive中,被连接对象必须为string或者array<string>,否则报错如下: hive> select concat_ws(',',unix_ti ...

随机推荐

  1. 【最大流之EdmondsKarp算法】【HDU1532】模板题

    题意:裸的最大流,什么是最大流,参考别的博客 运用复杂度最高的EK算法 O(M*N),模板来自紫书 #include <cstdio> #include <cstdlib> # ...

  2. XSD (xml Schema Definition)

    .xsd文件是定义DataSet的XML文件,利用XML文件的结构优势容易可视化地设计DataSet,设计完它会生成相应的.cs文件,里面的内容就是对应的类型化的DataSet.你的代码里的DataA ...

  3. struts 2 debug标签隐藏不显示

    struts2 的标签debug在页面中应用,并且struts的配置文件中也设置为开发模式,但是这个标签却被隐藏了,究其原因,是因为页面中body元素生命了class,其样式覆盖了原来的样式. 比如: ...

  4. C#核编之System.Console类

    顾名思义,Console类封装了基于控制台的输入输出和错误流的操作,下面列举一些System.Console类常用的成员的,这些成员能为简单的命令行程序添加一些"情趣",例如改变背 ...

  5. 使用 HttpWebRequest 发送模拟 POST 请求

    使用HttpWebRequest发送模拟POST请求  网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...

  6. SQL Server 事务嵌套

    示例代码: DECLARE @TranCounter INT; SET @TranCounter = @@TRANCOUNT; -- Procedure called when there is -- ...

  7. androik_sdk 更新慢问题解决办法。

    在windows中更改hosts(找到文件夹C:\Windows\System32\drivers\etc找到里面的hosts文件 )在这里添加74.125.237.1 dl-ssl.google.c ...

  8. C# 1作业 2广场砖面积 护栏长度

    作业1输入圆柱体的底面半径和高求体积             static void Main(string[] args)         {               //输入圆柱体的底面半径, ...

  9. bash基础知识

    站在用户登录的角度来说,SHELL的类型:登录式shell: 正常通常某终端登录 su - USERNAME su -l USERNAME 非登录式shell: su USERNAME 图形终端下打开 ...

  10. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )

    全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...