7. 函数

7.1 系统内置函数

  • 查看系统自带的函数:show functions;
  • 显示自带的函数的用法:desc function upper(函数名);
  • 详细显示自带的函数的用法:desc function extended upper;

7.2 自定义函数

  • 根据用户自定义函数类别,分为以下三种:

    • UDF(User Defined Function):

      • 一进一出;
    • UDAF(User Defined Aggregation Function):
      • 聚合函数(多进一出),类似于:max/min等;
    • UDTF(User Defined Table Generating Function):
      • 一进多出,类似于:lateral view explore()
  • 自定义 UDF 的编程步骤:

    • 继承 org.apache.hadoop.hive.ql.UDF;
    • 需要实现 evaluate 函数; evaluate 函数支持重载;
    • 在 HIVE 的命令行窗口创建函数:
      • 添加 jar:add jar linux_jar_path;
      • 创建 function: create [temporary] function [dbname.]function_name AS class_name;
    • 在 HIVE 的命令行窗口删除函数:
      • Drop [temporary] function [if exists] [dbname.] function_name;
  • 注意事项:UDF必须要有返回类型,可以返回 NULL,但是返回类型不能为 void;

7.3 自定义 UDF 函数

// 1. 创建一个 Maven 工程 Hive
// 2. 导入依赖
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--java 的编译版本 1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
</plugin>
</plugins>
</build> // 3. 创建一个类
import org.apache.hadoop.hive.ql.exec.UDF; public class HiveUdf extends UDF { public String evaluate(final String s) {
if (s == null) {
return null;
}
return s.toLowerCase();
}
} // 4.1 将 jar 包添加到 Hive 的 classpath
进入Hive Shell: bin/hive
添加 jar: add jar jar包所在路径 // 4.2 创建临时函数与自定义的 java class 关联
create temporary function myLowerCase as "com.noodles.hive.HiveUdf"; // 5. 使用自定义函数
select myLowerCase(ename) from emp;

最新文章

  1. Microsoft Visual Studio 2015 下载、注册、安装过程、功能列表、问题解决
  2. UIRefreshControl
  3. 谈谈iOS中的屏幕方向
  4. Html的智能表单
  5. Java -- 在Eclipse上使用Hibernate
  6. 转:Web应用程序项目XX已配置为使用IIS
  7. OpenStack 镜像密码修改办法
  8. 深入浅出Spring(五) SpringMVC
  9. ListIterator-迭代器
  10. hibernate多对多映射文件详解(一)
  11. hdu 5428 The Factor(数学)
  12. Thread初探
  13. Centos 6.5 安装python3.6
  14. 剑指OFFER——正则表达式匹配
  15. C# 13行代码带你模拟登录QQ空间
  16. 基于ITextSharp插件在ASP.NET MVC中将图表导出为PDF
  17. 移动App专项测试
  18. [svc]mysql备份恢复及常用命令
  19. [剑指Offer]50-第一个只出现一次的字符
  20. html中属于布尔类型的属性

热门文章

  1. bzoj 5206
  2. PHP全栈学习笔记20
  3. Python Tinker学习笔记
  4. ssh免密码登录与常见问题
  5. Allure自动化测试报告之修改allure测试报告logo
  6. Beyond compare4密钥
  7. android通用的UUID唯一标示符
  8. Vue中的动画效果
  9. HttpClient学习(二)—— MinimalHttpClient源码解析
  10. 记一次ArrayList产生的线上OOM问题