HIVE 自定义UDF并上传

HIVE 自定义UDF并上传

  最近在做一些ABtest的 统计分析时,由于用户分组一般采用CRC32,或者MD5加密,然后进行均匀分组。采取这些方式分组时,能很好的随机分组,但是给后期的统计带来不便,一般要先拿device_id,然后写一个脚本,不太方便,尤其当数据量很大时,跑得十分缓慢。

        HIVE的自定义UDF开发,能很好的解决这个问题。如下是自定义UDF开发及永久上传的方法。

一、所需环境:

    eclipse+maven,使用到的依赖如下:

 
  	org.apache.hive
  	hive-exec
  	0.13.1
	
	
	
    org.apache.hadoop
    hadoop-core
    1.0.0

二、自定义UDF

    以CRC32为例,代码如下:

package hive_udf.testudf;

import java.util.zip.CRC32;

import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;

public class Crc32  extends UDF{

	 public long evaluate(String device_id) {
         if(device_id == null){
        	 return 0;
         }
         CRC32 crc32 = new CRC32();
         crc32.update(device_id.getBytes());
         return crc32.getValue();
     }
}

      将UDF进行打包生成 jar包。


三、自定义UDF永久上传

1.将JAR包上传至 hdfs

hadoop fs -put crcUDF.jar /tmp/chenhan/

2.创建永久函数

create function crc32 as 'hive_udf.testudf.Crc32' using jar 'hdfs:///tmp/chenhan/crcUDF.jar';

    生成的crc32 被放在默认的default项目下,

使用时  select default.crc32(device_id) from .....

  

你可能感兴趣的:(hive,hive,udf,maven)