暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hive中函数的使用

喜讯XiCent 2019-11-07
687

上一篇我们说到了hive的安装还有一些常规的导入、导出、查询操作。今天我们要讲的是Hive函数的应用,Hive函数分为内置函数和外置函数, 对于一些普通的操作的我们使用内置函数就足够了,如果我们要进行一些复杂操作,就可以使用到我们的外置函数。来看看具体怎么操作吧^ ^

Hive函数

内置函数

在hive中已经提供了一些函数给我们使用,一般是一些字符串、json等一些简单的操作。如下

  1. 测试各种内置函数的快捷方法:

  2. 1.创建一个dual

  3. create table dual(id string);

  4. 2.load一个文件(一行,一个空格)到dual

  5. 3.select substr('angelababy',2,3) from dual;

  1. hive> select substr('dilireba',0,2) from dual;

  2. OK

  3. di

  4. Time taken: 0.295 seconds, Fetched: 1 row(s)

  5. hive> select substr('dilireba',1,2) from dual;

  6. OK

  7. di

  8. Time taken: 0.177 seconds, Fetched: 1 row(s)

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)

Hive自定义函数

自定义函数类别

  1. UDF作用域单个数据行,产生一个数据行作为输出作为输出。(数学函数,字符串函数)

  2. UDAF(用户定义聚集函数):接受多个输入行,并产生一个输出数据行。(count,max)

事不宜迟让我们来看看怎么编写一个UDF

UDF开发实例

  1. 使用的话就跟使用普通的内置函数一样,这里使用的是自定义的函数,并且还能通过入的不同调用不同的方法。

  2. 如果传入是字符串的话就是大写转小写,如果输入两个数字的话就是求和。

  3. 这里为了演示,请忽略下面添加函数时的函数命名。

  4. 代码异常简单

  5. 添加依赖

  1. <dependency>

  2. <groupId>org.apache.hive</groupId>

  3. <artifactId>hive-exec</artifactId>

  4. <version>1.2.1</version>

  5. </dependency>

  • 简单UDF示例步骤

1、先开发一个JAVA类,继承UDF,并重载evaluate方法

  1. public class ToLowerCaseUDF extends UDF{

  2. //重载

  3. public String evaluate(String input){

  4. return input.toLowerCase();//将大写字母转换成小写

  5. }

  6. public int evaluate(int a,int b){

  7. return a+b;//计算两个数之和

  8. }

  9. }

2、打成jar包上传到服务器

3、将jar包添加到hive的classpath

  1. hive>add JAR /home/hadoop/tolowercase.jar;

4、创建临时函数与开发好的java class关联

  1. hive>create temporary function tolowercase as 'com.kris.bigdata.hive.udf.ToLowerCaseUDF';

5、即可在hql中使用自定义的函数

  1. hive> select tolowercase('I AM KRIS') from dual;

  2. OK

  3. i am kris

  4. Time taken: 3.23 seconds, Fetched: 1 row(s)

  5. hive> select tolowercase(1,2) from dual;

  6. OK

  7. 3

  8. Time taken: 0.2 seconds, Fetched: 1 row(s)

  1. 注意:

  2. 打出的jar包记得要排除.SF、.DSA、.RSA文件。

  3. 不然会报出错误:java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

打包插件中添加配置:

  1. <configuration>

  2. <filters>

  3. <filter>

  4. <artifact>*:*</artifact>

  5. <excludes>

  6. <exclude>META-INF/*.SF</exclude>

  7. <exclude>META-INF/*.DSA</exclude>

  8. <exclude>META-INF/*.RSA</exclude>

  9. </excludes>

  10. </filter>

  11. </filters>

  12. </configuration>

这就是我们Hive中函数的一些简单应用啦~是不是觉得太过简单了,下一篇将给大家讲讲如何在hive中使用函数解析百万json并插入新的表, 以及hive中使用python脚本。

如果觉得不错的话记得like and commend喔~


文章转载自喜讯XiCent,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论