博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义Hive函数
阅读量:7143 次
发布时间:2019-06-28

本文共 2450 字,大约阅读时间需要 8 分钟。

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. 导入依赖  
org.apache.hive
hive-exec
1.2.1
junit
junit
4.8.2
test
org.apache.logging.log4j
log4j-core
2.8.2
org.projectlombok
lombok
1.16.18
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
UTF-8
org.apache.maven.plugins
maven-surefire-plugin
2.17
// 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;

转载于:https://www.cnblogs.com/linkworld/p/11060589.html

你可能感兴趣的文章
说说Micorsoft集群原理
查看>>
Android开发者指南(18) —— Web Apps Overview
查看>>
Oracle流程控制语句
查看>>
仿CSDN客户端首页(二)----拖拽排序Tabs的实现
查看>>
openstack 虚拟机导出
查看>>
《Flash建站技术》系列6-LoadVars数据提交与表单处理
查看>>
Service Mesh:什么是Sidecar模式
查看>>
python string
查看>>
纠结:决策有依据、局限和方法,也有后果需要承担
查看>>
小米纪录片《一团火》上映,这团火烧到你了吗?
查看>>
一篇好的BUG报告是如何炼成的
查看>>
要做好性能测试,该掌握些什么?
查看>>
今天配置java + selenium 3.0出了很多问题,记录如下
查看>>
xen虚拟化里常用的一些配置
查看>>
在用vi编辑文件时遇到“Terminal too wide”的提示
查看>>
RHEL6和RHEL7的变化
查看>>
VMware 虚拟机设置U盘启动(老毛桃 PE)
查看>>
程序员注意了!这样的公司千万不要去!
查看>>
文件服务器--samba和ftp的搭建
查看>>
我的友情链接
查看>>