Hive UDF函数
2015-09-22 11:17
423 查看
hive的0.7版本没有row_number函数,在http://www.cnblogs.com/ggjucheng/archive/2013/01/30/2868993.html 上找了一段
RowNumber.java
编译成可用的UDF函数的步骤如下
将RowNumber编译成RowNumber.class文件:javac -classpath $HIVE_HOME/lib/hive-exec-0.7.1.2.jar RowNumber.java
将RowNumber.class文件打包成jar文件:jar -cvf com.jar com
使用UDF函数
在hive shell下执行如下命令
add jar com.jar所在的路径/com.jar
create temporary function row_number as ‘com.blue.hive.udf.RowNumber’
就可以在hive中使用row_number了
RowNumber.java
package com.blue.hive.udf; import org.apache.hadoop.hive.ql.exec.UDF; public class RowNumber extends UDF { private static int MAX_VALUE = 50; private static String comparedColumn[] = new String[MAX_VALUE]; private static int rowNum = 1; public int evaluate(Object... args) { String columnValue[] = new String[args.length]; for (int i = 0; i < args.length; i++) 『 columnValue[i] = args[i].toString(); } if (rowNum == 1) { for (int i = 0; i < columnValue.length; i++) comparedColumn[i] = columnValue[i]; } for (int i = 0; i < columnValue.length; i++) { if (!comparedColumn[i].equals(columnValue[i])) { for (int j = 0; j < columnValue.length; j++) { comparedColumn[j] = columnValue[j]; } rowNum = 1; return rowNum++; } } return rowNum++; } }
编译成可用的UDF函数的步骤如下
将RowNumber编译成RowNumber.class文件:javac -classpath $HIVE_HOME/lib/hive-exec-0.7.1.2.jar RowNumber.java
将RowNumber.class文件打包成jar文件:jar -cvf com.jar com
使用UDF函数
在hive shell下执行如下命令
add jar com.jar所在的路径/com.jar
create temporary function row_number as ‘com.blue.hive.udf.RowNumber’
就可以在hive中使用row_number了
相关文章推荐
- 哈达玛(Hadamard)矩阵
- javascript 异步调用 后台.cs里的方法 PageMethods如何使用
- IE浏览器解决margin:0 auto;不居中办法!
- 遍历json的方式
- 纯js选项卡切换
- 如何去绘制一个圆并且转为imageView格式
- Spring事务配置的五种方式
- jquery选择器 ID不能有点 .
- 远程连接Ubuntu9 服务器 (putty)ssh 连接
- linux之ps命令详解
- hdu5446 Unknown Treasure(数论综合题:大组合数取大合数模:Lucas+CRT)
- iOS9问题备忘
- VS2010与水晶报表V13的打包集成小结
- 【ajax跨域】原因原理解决
- php类获取静态变量值以及调用
- 热更新-Android与Lua相互通信
- XMLItergration.java
- java.io.IOException: Stream closed
- Android App性能信息获取方法
- iOS 9中使用手Q支付SDK须知