zoukankan      html  css  js  c++  java
  • HIVE 编写自定义函数UDF

    一 新建JAVA项目 并添加 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar

      

      hive-exec-2.1.0.jar 在HIVE安装目录的lib目录下

      hadoop-common-2.7.3.jar在hadoop的安装目录下的sharehadoopcommon

     二 编一个一个类并继承UDF 并重写evaluate方法

      下面以rownum为例

    package com.udf;
    
    import org.apache.hadoop.hive.ql.exec.UDF;
    import org.apache.hadoop.io.Text;
    
    public class RowNumUDF extends UDF{
    	
    	public static String signature = "_";
    	public static int order = 0;
    	
    	public int evaluate(Text text){
    		
    		if(text != null){
    			
    			//分组排序的依据,列名,通常为主键
    			String colName = text.toString();
    			
    			//处理第一条数据
    			if(signature == "_"){
    				
    				//记下分组排序的字段:主键,并将rownum设为1
    				signature = colName;
    				order = 1;
    				
    				//返回rownum
    				return order;
    			}else{
    			//首先比对是否和上一条主键相同
    			if(signature.equals(colName)){
    				
    				//rownum依次加1
    				order++;
    				return order;
    			}else{
    					//如果主键改变,将rownum设为1
    					signature = colName;
    					order = 1;
    					return order;
    				}
    			}
    		}else{
    			//如果主键为空,则返回-1
    			return -1;
    		}
    	}
    }
    

    三 导出位jar包并在HIVE中注册

      

      

  • 相关阅读:
    mysql将视图数据迁移到表中
    一、Vant示例文件
    一、VS安装GitHub插件
    二、.net 特性之二
    .net Core jwt策略参数
    一、
    一、.Net Core 3.1 全局序列化
    前端项目
    python 小脚本升级-- 钉钉群聊天机器人
    java 接口测试,使用excel做数据驱动(二)
  • 原文地址:https://www.cnblogs.com/duking1991/p/6094730.html
Copyright © 2011-2022 走看看