【头歌】Hive内置函数 - 详解

Hive函数实战:从查询到排序
本文是一系列Hive函数使用教程,包括函数查询、描述、调用,Hive标准函数,聚合函数,日期函数,表生成函数的使用,以及如何进行分组排序取TopN的操作。通过实例详细解释了每个函数的用法和实践步骤。

【提示】点击每一关参考答案可以快速复制。

目录

第1关:函数的查询、描述和调用

任务描述

相关知识

编程要求

测试说明

参考答案

第2关:Hive标准函数

任务描述

相关知识

编程要求

测试说明

参考答案 

第3关:Hive聚合函数

任务描述

相关知识

编程要求

测试说明

参考答案

第4关:Hive日期函数

任务描述

相关知识

编程要求

测试说明

参考答案

第5关:表生成函数

任务描述

相关知识

编程要求

测试说明

参考答案

第6关:分组排序取TopN

任务描述

相关知识

编程要求

测试说明

参考答案


第1关:函数的查询、描述和调用

任务描述

本关任务:查一下add函数的用法,并尝试使用它。

相关知识

本关我们将学习Hive中函数的基本用法。

函数的查询

Hive中的函数比较多,我们不需要记住所有函数的意义和用法。当需要使用某个函数的时候,可以直接在Hive交互界面查询。

首先,在命令行输入hive进入交互模式,如下: (以下所有图片中的红色箭头均表示用户的输入)

成功进入后如下:

查看Hive的所有函数

查看所有函数的命令是:

show functions

结果如下:

当然,结果非常多,上图只展示了极少的部分。

查看某个函数的含义和用法

以上图中的abs函数为例子: 查看函数含义:

desc function abs

结果如下:

上面的英文的意思是:abs函数的含义是返回x的绝对值。

我们还可以看下这个函数使用的例子:

desc extended function abs

到这里,这个函数是干什么的、以及怎么用,就一目了然了。

函数的调用

上面给出了函数具体使用的例子,但是我们毕竟没有亲自用过,俗话说“实践出真知”,那就试用下abs函数。

一些不得不做的准备工作

首先,例子里给的src其实是一个表,所以我们需要先建一个表,名字就叫test_table吧,没必要和例子一模一样:

create table test_table(id int,name string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile;

然后,往表里插入一些数据,要不然select查不出任何东西。

hive没有insert关键字,插入数据需要从磁盘中导入。在当前命令行所在的目录下新建一个a.txt文件,内容如下:

一行内的分隔符是\t,这个分隔符我们在建表的时候实际上已经指定了。

然后执行下面的语句就导入了:

load data local inpath 'a.txt' into table test_table;

通过

select * from test_table

看下有没有导入成功:

我这里是成功了,如果没有成功,你得重新尝试。

开始实践

一番折腾后,现在,可以来试试abs函数了:

select abs(0) from test_table limit 1;

看下输出:

没错,结果是0

再来看下负数的abs,如下:

select abs(-2) from test_table limit 1;

输出:

这一关是教大家如何去了解并实践一个函数,就不再给例子了,需要大家多多尝试。

编程要求

根据提示,在右侧编辑器BeginEnd之间补充代码,使用Hive中的ceil函数求数字66666ceil的结果,我们已经准备了表test_table,而且表中已经有若干的数据。

测试说明

平台会执行你补充的sql文件,然后将输出和正确的结果进行对比,从而判断你的程序是否正确。

无输入,正确的输出如下:

66666

参考答案

#代码文件


drop table if exists test_table;
create table test_table(id int,name string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile;
load data local inpath 'step1/data.txt' into table test_table;

--------- Begin ---------
select ceil(66666) from test_table limit 1;
--------- End ---------

第2关:Hive标准函数

任务描述

本关任务:按要求查询数据。

相关知识

本关将学习Hive中的一些最基本的函数。

先准备一些数据

我们需要先准备一些数据,使用的表还是第一关中介绍的test_table表,向其中导入如下的数据,导入方法见第一关。

第一列对应test_table表的id,第二列对应name

关系函数

关系函数作用在where条件子句中,用来筛选符合要求的列。

相等关系

判断两个值是否相等使用=即可,如下,查找id等于15的数据:

select * from test_table where id=15;

结果如下: (以下所有截图中的红色箭头均为后期添加,表示运行的结果)。

查找名字为tom的数据:

select * from test_table where name='tom';

字符串类型必须放在单引号中。

结果如下:

不等关系

不等于使用<>来表示,比如查找所有id不等于100的数据:

select * from test_table where id<>100;

结果如下:

其它的诸如大于、小于、大于等于,符号和数学基本相同,用法和上面相同。

like比较

对于字符串来说,很多时候还需要用到正则表达式的比较,在hive中通过like关键字来实现:

select * from test_table where name like 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想编程家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值