Hive内置函数和自定义函数的使用
一、内置函数的使用
查看当前hive版本支持的所有内置函数
show function;查看某个函数的使用方法及作用,比如查看upper函数
desc function upper;查看upper函数更为详细的信息
desc function extended upper;转换为小写: lower()
查询emp表中员工姓名,员工姓名小写显示
select empno, ename, lower(ename) from emp;字符串连接: concat()
查询emp表,将员工姓名追加到员工编号后
select empno, ename, concat(empno, ename) from emp;
二、自定义函数
UDF分为三种,分别如下
- UDF(User-Defined_Function),一进一出(输入一行,输出一行),比如: upper(),lower()等
- UDAF(User-Defined Aggregation Funcation),多进一出(输入多行,输出一行),比如: avg(),sum()等.
- UDTF(User-Defined Table-Generating Functions),一进多出(输入一行,输出多行),比如: collect_set(), collect_list()等.ABSOLUTE
使用自定义函数需要引入hive-exec的依赖
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.0</version>
</dependency>
自定义UDF函数
UDF编程模型:
(1) 继承 org.apache.hadoop.hive.ql.exec.UDF
(2) 实现 evaluate() 方法
实现需求: 自定义UDF函数,给指定的字符串前加上字符串hello
比如: 输入 Tom, 输出 helle:Tom
自定义函数有4种使用方式,the following:
方式一(临时函数,只能在当前客户端使用)
将我们刚编写完成的代码,打成jar maven下 clean package将jar包上传到hive
add jar /home/hadoop/libs.hive-1.0-SNAPSHOT.jar;创建函数
create temporary function say_hello as 'com.bigdata.hadoop.hive.GenericUDFHello';查看创建的函数say_hello
show functions;查看函数say_hello的详细信息
desc function extended say_hello;使用函数
select ename,say_hello(ename) from emp;方式二(临时函数,只能在当前客户端使用)
在$HIVE_HOME下新建目录auxlib,将jar拷贝到该目录下,重启hadoop
cp /home/hadoop/libs/hive-1.0-SNAPSHOT.jar创建函数say_hello2
create temporary function say_hello2 as 'com.bigdata.hadoop.hive.GenericUDFHello';函数的查看与使用同方式一
方式三(永久函数,创建后可以在任意客户端使用,建议使用)
上传jar到hdfs
hadoop fs -put hive-1.0-SNAPSHOT.jar /libs创建函数say_hello3
create function say_hello3 as 'com.bigdata.hadoop.hive.GenericUDFHello' using jar 'hdfs://hdpcomprs:9000/libs/hive-1.0-SNAPSHOT.jar';注意: 创建完function之后,通过show functions并没有看到我们自定义的函数say_hello3,但是可以使用
使用函数,效果同上方法四(永久函数,将自定义函数集成到hive源码中)
使用这种方式需要修改hive的源代码,集成到hive源码后,hive启动后就可以使用,不用再向hive中注册函数,相当于一个hive的内置函数。如果公司有自己的大数据框架版本,建议使用这种方式。
Hive内置函数和自定义函数的使用的更多相关文章
- Hive学内置条件和字符串函数
https://blog.csdn.net/skywalker_only/article/details/38752003 条件函数 下表为Hive支持的一些条件函数. 返回类型 函数名 描述 T i ...
- Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)
Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数
- Hive之函数与自定义函数
系统自带的函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的 ...
- Python内置的字符串处理函数整理
Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...
- PHP内置的字符串处理函数
字符串的特点 1.其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4 ...
- thinkPHP内置字符串截取msubstr函数用法详解
作者:陈达辉 字体:[增加 减小] 类型:转载 时间:2016-11-15 我要评论 这篇文章主要介绍了thinkPHP内置字符串截取函数用法,结合实例形式分析了thinkPHP内置的字符串截取函数功 ...
- python内置常用高阶函数(列出了5个常用的)
原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...
- jquery (内置遍历数组的函数,事件)
内置遍历数组的函数: 1. $.map(array, function() { }); 取到数组或者对象array中每一项进行遍历 然后在function中处理: var attr = [1,2,3 ...
- MySQL之运算符与函数、自定义函数
一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 ...
- Angular中的内置指令和自定义指令
NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减 ...
随机推荐
- Full Binary Tree(sdut 2882)
Problem Description: In computer science, a binary tree is a tree data structure in which each node ...
- Mysql慢查询定位和优化实践分享
调优目标:提高io的利用率,减少无谓的io能力浪费. 1.打开慢查询日志定位慢sql: my.cnf: slow_query_log slow_query_log_file=mysql.slow lo ...
- 对get post请求的封装
HttpUtil.java package com.dhc.task.wx.util; import java.io.BufferedReader; import java.io.IOExceptio ...
- Leetcode:ZigZag Conversion分析和实现
问题的大意就是将字符串中的字符按锯齿状(倒N形)垂直由上向下放置,最后水平从左向右读取.比如 ABCDEFGHIJKLMN,4表示 A G M B F H ...
- Docker学习笔记_安装和使用mysql
一.系统环境和准备 1.宿主机OS:Win10 64位 2.虚拟机OS:Ubuntu18.04 3.操作账号:docker 二.安装 1.搜索mysql镜像:docker search mysql 2 ...
- Apache fcgistarter命令
一.简介 fcgistarter命令用于启动FastCGI程序. 二.语法 fcgistarter -c command -p port [ -i interface ] -N num 参考:http ...
- Luogu 2704 [NOI2001]炮兵阵地
唔,想到了状压之后就不会了……实在是菜 考虑压两行,设$f_{i, j, k}$表示当前到第$i$行,上一行是$j$状态,前一行是$k$状态的最多能放的炮兵的数量. 发现第一维还可以滚掉,好像可以转移 ...
- Java 设计模式 和七大设计原则
创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 生成器模式(Builder pattern): 使 ...
- Linux 命令之chmod
立贴今日吉,不断更新,欢迎斧正,支持为感! 1. chmod --权限控制 chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Uni ...
- winform treeview绑定数据 DOM操作
form1 public void treeView() { // datatable 定义变量接收 传归来的值 DataTable Father = new BuMenDA().ConSql(); ...