文章出處

1.由于公司性質,需要編寫一個對字段加密解密的函數。

建立一個maven項目,導入jar包,跟環境的版本保持一致即可。

dependency>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive-exec</artifactId>
  <version>1.1.12</version>
</dependency>

然后繼承UDF即可

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

@Description(name = "IpToNum", value = "_FUNC_(ip) - Convert IPv4 to a num(long).")
public class IpToNum extends UDF {
  public long evaluate(String ip) {
      String[] nums = ip.split("\\.");
      return Long.parseLong(nums[3]) + Long.parseLong(nums[2]) * 256
         + Long.parseLong(nums[1]) * 65536 + Long.parseLong(nums[0]) * 16777216;
  }
}

evaluate方法的輸入輸出即是UDF函數的輸入輸出
Description注解部分提供函數的幫助信息. 

2.創建永久函數

打成jar包(idea的打包即可)上傳到hdfs文件里:hdfs://test.com:8020/hiveudf/hive-udf.jar

CREATE FUNCTION ods.enbase64 AS 'com.mo9.udf.EncodeBase64' USING JAR 'hdfs://test.com:8020/hiveudf/hive-udf.jar'

這個是屬于ods的永久函數,別的庫調用時要加上ods.enbase64

3.創建臨時函數

create temporary function iptonum as 'com.mo9.udf.EncodeBase64' using jar 'hdfs://test.com:8020/hiveudf/hive-udf.jar'

終端斷開,此函數失效。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()