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

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

  hot3.png

1: 编写 udf 函数   , eclipse build path 导入依赖包 hive-exec-xxxx.jar

 

 依赖包尽量和生产环境保持一致,不要开发环境依赖这个版本,测试环境依赖那个版本,生产再依赖另外一个版本,如果出现问题只能呵呵呵了。 

2: 编译java文件,生成class文件,   

/usr/java/jdk1.7.0_67-cloudera/bin/javac -cp /home/cloudreajiaxiu/cm-5.13.0/share/cmf/common_jars/hive-exec-1.1.0-cdh5.4.0.jar source/AddRepayNum.java -d classes/

-d 指定编译后class文件存放的位置

如果觉得 javac命令麻烦,可以在eclipse中进行编译。

编写一个main函数, 调用下evaluate

执行Main函数,  项目bin目录下应该会生成相应的class文件

3: 打包

jar cvfM target/com.lizhifeng.hive.jar -C ./classes/

4:  测试自定义函数

CREATE temporary FUNCTION add_repay_num AS 'com.lizhifeng.hive.AddRepayNum' USING JAR '/root/com.lizhifeng.hive.jar'; 

5: 测试没有问题后将jar上传到 hdfs

       hadoop fs -put /root/com.lizhifeng.hive.jar /hivefunction/

6:创建永久自定义函数

  CREATE FUNCTION add_repay_num AS 'com.lizhifeng.hive.AddRepayNum' USING JAR 'hdfs://nameservice1/hivefunction/com.lizhifeng.hive.jar';

 

遇到一个十分奇葩的问题

同一个函数 root用户和其他用户能正常使用, 但是hadoop 用户不能够使用!!!!!!

java 环境一致 。

 

hive 内置的函数在 package org.apache.hadoop.hive.ql.udf下,想看看min和avg函数是如何实现的,结果懵逼了

@Description 函数说明。 

 

统计文件列数  

head -1 192836473812121274201711133372_contract_state.csv | awk -F'^' '{print NF}'

统计文件行数 

wc -l 192836473812121274201711133372_contract_state.csv | awk '{print $1}'

 

 

转载于:https://my.oschina.net/qidis/blog/1576054

你可能感兴趣的文章
通过TMG发布ActiveSync
查看>>
Web服务器的配置与管理(4) 配置访问权限和安全
查看>>
吉林出差所见、所闻、所感
查看>>
RHEL7修改root用户密码
查看>>
mysqldump导出 timestamp类型数据 时区偏差8小时
查看>>
我的友情链接
查看>>
中小型企业如ERP选型四大标准
查看>>
笔记——quota磁盘配额
查看>>
索引表批量数据装载
查看>>
@Value("#{}")与@Value("${}")的区别
查看>>
Zabbix邮件报警设置方法
查看>>
20145328 《信息安全系统设计基础》第6周学习总结
查看>>
C语言随笔_类型声明
查看>>
AIX或LINUX,通过华为存储V3上添加对应LUN组,分配存储资源
查看>>
监控mysql主从的脚本
查看>>
用phpmyadimn来连接管理多个数据库
查看>>
linux java 定时任务
查看>>
Linux守护进程(init.d和xinetd)
查看>>
bootstrap-进度条
查看>>
并发学习心得
查看>>