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包简单方法相关推荐

  1. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  2. 【Linux】shell调用Java程序main方法通过crontab定时执行

    来源:https://blog.csdn.net/coolcooldool/article/details/51775105 最近一个项目需要写一个batch定时读取文件往数据库里插入记录,第一次写, ...

  3. Discuz! X2.5 添加自定义数据调用模块(简单方法)

    转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开 ...

  4. android 调用java类_Android中在WebView里实现Javascript调用Java类的方法

    搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...

  5. oracle 执行java_oracle调用JAVA类的方法

    oracle调用JAVA类的方法主要有以下三种: 1. 用loadjava方法装载: 可能是调试方便,据说这种方法比较通用. c:\test\hello.java public class hello ...

  6. webview 调用java_Android中在WebView里实现Javascript调用Java类的方法

    为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一 ...

  7. Qt用QProcess调用exe的简单方法

    Qt调用exe的简单方法: 1.找到exe的路径(注意,路径最好全是英文,无空格) 2.调用此exe 简单启动: QProcess pro; 1.带参数(参数具体意义请百度) pro.startDet ...

  8. c++主函数中调用类内函数的方法

    c++主函数中调用类内函数的方法 以基数排序为例: #include <iostream> #include <vector> using namespace std;//基数 ...

  9. php的call_user_func函数实现调用类中的方法

    php的call_user_func函数实现调用类中的方法 解决方法: call_user_func(array($classname,'doindex')); 例子:http://www.yayi​ ...

最新文章

  1. python 100题
  2. 李开复老师:微博改变一切
  3. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint
  4. 大道至简第七章第八章
  5. docker-conpose 入门
  6. mysql debug log_PHP代码调试与日志
  7. springcloud云服务架构-HongHu commonservice-eureka项目构建过程
  8. spark生态及各个功能
  9. Tomcat免安装版+Eclipse配置
  10. linux时间戳转换c语言,C语言将时间戳转换成日期时间
  11. fms安装教程 linux_如何借助Pandora FMS监控CentOS和Ubuntu服务器?
  12. 网安信—web3.0是什么?
  13. Electron修改图标
  14. win10系统要求配置_观察者系统还原游戏配置要求高吗?Observer: System Redux硬件一览!...
  15. amd显卡用黑苹果输出黑屏_微星HD7850显卡DVI接口黑屏,改DSDT无果
  16. 五子棋 day5-2
  17. 阿里云centos服务器基本构建(服务器的探索之路)
  18. 【正点原子MP157连载】第一章 Ubuntu系统安装-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
  19. 进程资源图理解与化简
  20. 步道乐跑怎么刷公里_步道乐跑怎么刷?

热门文章

  1. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构
  2. 李梁北京大学 计算机,【资环学院】圆梦路上多楷模
  3. winform 图片压缩大小为原图的一半_SCI论文图片编辑——常见十问十答
  4. 51单片机sht30_基于51单片机和机智云的WIFI智能插座(2019版)
  5. Python入门--多态
  6. FloydWarshall多(所有)源点的最短路径实现(带路径打印)
  7. 汉明码---存储器校验(简单易懂详解)
  8. pytorch中的Sequential使用方法
  9. Airflow集成在线编写创建dag的插件
  10. python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件