hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...
如何在Hive中创建自定义函数UDF及使用
如何在Impala中使用Hive的自定义函数
UDF函数开发
使用Intellij工具开发Hive的UDF函数,进行编译;
1.使用Intellij工具通过Maven创建一个Java工程,并添加pom.xml依赖
org.apache.hive
hive-exec
${hive.version}
2.Java示例代码如下
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* @Auther: 截取2018023 前五位(简单的udf对列的字符串处理)
* @Date: 2019/3/11 10:00
* @Description:
*/
public class SubStrUdf extends UDF {
public static String evaluate(String str) {
if(null == str || str.length()==0){
return "";
}else{
return str.substring(0,5);
}
}
}
此处使用一个简单的日期截取来做示例,注意此处需要集成UDF类,重写evaluate方法,来实现自己定义函数。
3.编译jar包
前提条件是已配置Maven的环境变量,命令行进入工程目录,执行如下命令:
mvn clean package
或者
直接在IDE maven 的插件里面进行打包
clean
package
install
3.Hive使用自定义函数(UDF)
将章节2中编译好的sql-udf-demo-1.0.jar上传到集群服务器;
3.1创建临时UDF
1.进入Hive的shell命令行,执行如下命令,创建临时函数
hive> add jar /var/lib/hadoop-hdfs/sql-udf-demo-1.0.jar;
hive> create temporary function SubStrUdf as 'com.demo.hive.SubStrUdf';
2.在命令行测试该UDF函数
hive> select SubStrUdf (send_erp_time), send_erp_time from erp_goods.order_goods limit 10 ;
hive会进行分布式的运算
3.2创建永久UDF
1.在HDFS中创建相应目录,将sql-udf-demo-1.0.jar包上传至该目录
[hdfs@cdh21 ~]$ hadoop fs -mkdir /udf
[hdfs@cdh21 ~]$ hadoop fs -put sql-udf-demo-1.0.jar /udf
2.进入Hive的shell命令行,执行如下命令创建永久的UDF
hive> create function SubStrUdf as 'com.demo.hive.SubStrUdf' using jar 'hdfs://cdh21:8020/udf/sql-udf-demo-1.0.jar';
注意:在创建的时候如果带有数据库名,则该UDF函数只对该库生效,其它库无法使用该UDF函数。
在命令行测试该函数是否可用,测试与上面一样
3.验证永久UDF函数是否生效
重新打开Hive CLI能正常使用创建的UDF函数。
hive> select SubStrUdf (send_erp_time), send_erp_time from erp_goods.order_goods limit 10 ;
4.Impala使用Hive的UDF(直接使用hive中的java的jar文件中函数,同步元数据即可,可以直接复用哦)
1.在Impala shell命令行执行元数据同步命令
impala> invalidate metadata;
测试:
重新同步元数据之后再次进行测试:
注意,如果这边在第一个impala-shell进去的时候,同步元数据之后还是不能使用hive创建的UDF函数的话,关闭客户端连接,重新进入就可以使用了
删除UDF函数命令:
impala> drop function SubStrUdf;
且重启也生效
hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...相关推荐
- wordpress 古腾堡_如何在WordPress中创建自定义古腾堡块(简便方法)
wordpress 古腾堡 Do you want to create a custom Gutenberg block for your WordPress site? After the Word ...
- python django web典型模块开发实战_带你读《Python Django Web典型模块 开发实战》之一:从新浪微博聊起多端应用-阿里云开发者社区...
Python Django Web典型模块 开发实战 点击查看第二章 点击查看第三章 寇雪松 编著 第1章 从新浪微博聊起多端应用 当人们听到"新浪",脑海里第一个浮现的关联词是& ...
- python读取hdf-eos5数据_《Python和HDF 5大数据应用》——2.4 你的第一个HDF5文件-阿里云开发者社区...
本节书摘来自异步社区<Python和HDF 5大数据应用>一书中的第2章,第2.4节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区" ...
- sftp shell 批量上传文件_如何在shell脚本里使用sftp批量传送文件-阿里云开发者社区...
主要步骤如下: 1.为运行shell脚本的本地用户生成密钥对 2.将其中的公钥分发到sftp欲登录的远程服务器上 3.编写并以上面的本地用户运行shell脚本 一.生成密钥对 在shell脚本中使用s ...
- c#如何wmf图片转换成png图片_【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件-阿里云开发者社区...
最近研究了一下DICOM和BMP文件转换的问题,也是很头大.度娘了很久,也在CSDN等论坛看到一些断断续续的文件,最主要的是代码只是片断,不是完整的实现.头大了. 首先,了解一下BMP文件格式,BMP ...
- halcon中面到面的距离_halcon学习笔记——(8)由标定板得到测量平面位姿-阿里云开发者社区...
如图:由标定板位姿获取测量板位姿 1.pose_to_hom_mat3d( : : Pose : HomMat3D) 把三维位姿转化为齐次变换矩阵 2.hom_mat3d_translate_loca ...
- 如何在android中创建自定义对话框?
本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...
- mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...
- freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区
Freebsd中mysql安装及使用笔记 x3d 2009-07-31 662浏览量 简介: 1.安装 一开始连mysql的软件包在freebsd中叫什么都不知道: 依稀属于databases类,先到 ...
最新文章
- 车辆颜色识别学习笔记
- jdbc动态查询语句_Java修行第037天--JDBC技术
- 入门 | 32 个常用 Python 实现
- 使用 Git Extensions 简单入门 Git
- java字符流写入式乱码_字节流乱码与字符流乱码
- python3纵向输出字符串_python3字符串输出常见面试题总结
- 如果有轮回,又为何一定要抹去前世记忆?
- javascript:查找“跳号”号码
- 聊一聊使用airtest-selenium做Web自动化的常见问题
- python两数之和是多少_Python面试:两数之和
- Amazon 的IoT之路
- Qt qmake LIBS的使用指南
- 亚商策略会|闪马智能乘势“价值重构”,分享智慧城市建设新思路
- 我的计算机梦想作文,我的梦想作文600字
- Qt示例解析 【Callout】
- php创蓝253四要素认证_PHP短信接口分享:适用于创蓝253平台下的短信验证码、短信服务接口...
- 双下巴的瘦脸运动方法 - 生活至上,美容至尚!
- Windows系统搭建GitServer--Bonobo Git Server
- 手机汉字输入法欲立国家标准
- 快速幂算法的原理及实现
热门文章
- String类的equals()与==的区别
- Python中的lambda表达式与filter函数
- Linux下的less命令
- SpringBoot项目中获取yml文件的属性时实体属性类出现Spring Boot Configuration Annotation Processor not found in classpath
- c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量
- 全局声明宏定义_C++模拟面试:宏、lambda、智能指针闲谈
- python打包和添加数据文件_Python打包时添加非代码文件的坑
- init 0-6 这几个启动级别都代表什么意思
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.9
- Android开发笔记(一百五十七)使用OpenGL实现翻书动画