UDF函数,hive调用java包简单方法
UDF函数,是hadoop在强大的大数据批量导入导出操作之余,为了满足复杂的数据逻辑操作留下的接口
核心思想:不管是UDF函数还是自定义处理jar包,都是要放置在hadoop服务器上的,相当于hadoop多出了一个自定义的处理数据的方法
1)其中调用的不管是参数还是数据库都是以hadoop本身的服务器环境路径为本地路径,而不是自己操作的java环境
2)
现在记录下2种近期使用过的简单方法,非常简单。
1、函数调用
1)导入UDF架包,保证引用UDF时不会编译报错
2)java中建任意类继承UDF,然后重写其evaluate方法,参数为你想操作的字段的值
-- 建议单一修改字段值时但是hive自带函数不满足条件时使用 不建议处理复杂操作
3)将写好的java类编译为.class文件 可以使用eclipse或者intelij等IDE工具直接获取,或者使用jdk编译方式
-- jdk编译方式,将写好的java类拷贝出来放在1个路径简单的位置, win+R --cmd 打开命令窗口 cd到jdk的bin目录下
javac + java文件位置 回车运行即可,若报错 检查bin目录下是否缺少javac组件或者文件路径是否写错
4)打包 仍然可以使用eclipse或者intelij等IDE工具直接打包 也可以使用jar命令打包方式 保证2种方式打出来的包结构相同即可
-- jar打包方式 新建文件夹,名称英文即可,此处假设为com。将3)步生成好的class文件放入 假设为test.class
cd 到com的同级目录 使用命令 jar -cvf testUdf.jar com 运行后会在com的同级目录中出现名称testUdf.jar的包
5)将包上传到hadoop服务器上你可以找到的位置 假设为 /home/hadoop/soft/file/testUdf.jar
6)将包加入hive 进入hive环境,输入命令:add jar /home/hadoop/soft/file/testUdf.jar;
1> 临时方式:create temporary function testFunction as 'com.test'; -- 只对当前session起效,即退出hive后,下次要使用需要再次创建
2>永久生效:
《1》 上传到 hdfs,使用命令:hdfs dfs -put /home/hadoop/soft/file/testUdf.jar /lib
《2》 创建函数 create function functionTest as 'com.test' using jar 'hdfs:///lib/testUdf.jar';
2、 比较实用的 包jar调用,使用sh的脚本调用方式 实现方法更加简单
1)不用实现UDF,直接像写正常的java类那样写一个你要处理数据的类,包含1个main函数即可
2)入参从main函数的 args中取,可以为任意类型,第1个为args[0],第2个为args[1] 以此类推
3)将写好的java程序打包,
这里需要注意的是:除了jdk的架包外,若还需要其他架包一起打包进jar‘。一般若是作数据处理是不需要其他包的,若有
需要特别处理的方法,可以自己写一个工具类然后把整个函数拷贝进去
4)将打好的包上传到hadoop上自己熟悉的位置,使用sh脚本调用jar包,带上自己要使用的参数即可
5)sh调用方式: 暂无
需要引起注意的地方: 1》 hadoop我使用的环境是原先配置的有jdk,若使用者没有需要自己配置
2》 此方法适用于 使用参数 查询 hive数据进行复杂算法逻辑
转载于:https://www.cnblogs.com/mzyy/p/9879696.html
UDF函数,hive调用java包简单方法相关推荐
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...
- 【Linux】shell调用Java程序main方法通过crontab定时执行
来源:https://blog.csdn.net/coolcooldool/article/details/51775105 最近一个项目需要写一个batch定时读取文件往数据库里插入记录,第一次写, ...
- Discuz! X2.5 添加自定义数据调用模块(简单方法)
转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开 ...
- android 调用java类_Android中在WebView里实现Javascript调用Java类的方法
搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...
- oracle 执行java_oracle调用JAVA类的方法
oracle调用JAVA类的方法主要有以下三种: 1. 用loadjava方法装载: 可能是调试方便,据说这种方法比较通用. c:\test\hello.java public class hello ...
- webview 调用java_Android中在WebView里实现Javascript调用Java类的方法
为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一 ...
- Qt用QProcess调用exe的简单方法
Qt调用exe的简单方法: 1.找到exe的路径(注意,路径最好全是英文,无空格) 2.调用此exe 简单启动: QProcess pro; 1.带参数(参数具体意义请百度) pro.startDet ...
- c++主函数中调用类内函数的方法
c++主函数中调用类内函数的方法 以基数排序为例: #include <iostream> #include <vector> using namespace std;//基数 ...
- php的call_user_func函数实现调用类中的方法
php的call_user_func函数实现调用类中的方法 解决方法: call_user_func(array($classname,'doindex')); 例子:http://www.yayi ...
最新文章
- python 100题
- 李开复老师:微博改变一切
- docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint
- 大道至简第七章第八章
- docker-conpose 入门
- mysql debug log_PHP代码调试与日志
- springcloud云服务架构-HongHu commonservice-eureka项目构建过程
- spark生态及各个功能
- Tomcat免安装版+Eclipse配置
- linux时间戳转换c语言,C语言将时间戳转换成日期时间
- fms安装教程 linux_如何借助Pandora FMS监控CentOS和Ubuntu服务器?
- 网安信—web3.0是什么?
- Electron修改图标
- win10系统要求配置_观察者系统还原游戏配置要求高吗?Observer: System Redux硬件一览!...
- amd显卡用黑苹果输出黑屏_微星HD7850显卡DVI接口黑屏,改DSDT无果
- 五子棋 day5-2
- 阿里云centos服务器基本构建(服务器的探索之路)
- 【正点原子MP157连载】第一章 Ubuntu系统安装-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 进程资源图理解与化简
- 步道乐跑怎么刷公里_步道乐跑怎么刷?
热门文章
- JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构
- 李梁北京大学 计算机,【资环学院】圆梦路上多楷模
- winform 图片压缩大小为原图的一半_SCI论文图片编辑——常见十问十答
- 51单片机sht30_基于51单片机和机智云的WIFI智能插座(2019版)
- Python入门--多态
- FloydWarshall多(所有)源点的最短路径实现(带路径打印)
- 汉明码---存储器校验(简单易懂详解)
- pytorch中的Sequential使用方法
- Airflow集成在线编写创建dag的插件
- python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件