Hive 自定义函数函数

    xiaoxiao2021-03-25  62

    使用内置的函数无法完成分析任务,那么需要写自定义函数 show  functions;     //查看自带的所有的内置函数 desc function upper;  //查看具体的某个函数的用法 desc function extended upper; //带有具体案例 ##分三类      ## UDF  一进一出  处理原文件内容某些字段包含 []  ""        ## UDAF 多进一出   sum()  avg()  max()  min()      ## UDTF 一进多出   ip  -> 国家   省  市 UDF函数的开发      ** 必须继承UDF类      ** 重写evaluate函数  支持重载      ** 必须要有返回类型,可以返回null,但是返回类型不能为void      ** 建议使用Text/LongWritable ## 1.创建一个maven项目 ## 2.修改pom.xml文件 <dependency>      <groupId>org.apache.hive</groupId>      <artifactId>hive-jdbc</artifactId>      <version>0.13.1</version> </dependency> <dependency>      <groupId>org.apache.hive</groupId>      <artifactId>hive-exec</artifactId>      <version>0.13.1</version> </dependency> < dependency >     < groupId > org.apache.hadoop </ groupId >     < artifactId > hadoop-common </ artifactId >     < version > 2.5.0 </ version > </ dependency > ## 3.替换repository ## 4.包含hive的依赖的jar的repository  ## 代码实现(注意必须实现一个名为evaluate的方法)      import org.apache.hadoop.hive.ql.exec.UDF;      import org.apache.hadoop.io.Text;      public class SalaryUDF extends UDF{           public Text evaluate(Text salaryText){                Text text = new Text();                //1.判断salaryText是否为null                if (salaryText == null) {                     return null;                }                //2.判断salaryText是否可转换为一个double类型                double salary = 0;                try {                     salary = Double.valueOf(salaryText.toString());                } catch (NumberFormatException e) {                     e.printStackTrace();                     return null;                }                if (salary > 3000) {                     text.set("大于3000的一组...");                     return text;                }else if (salary <= 3000 && salary > 2000) {                     text.set("小于等于3000并且大于2000的一组...");                     return text;                }else {                     text.set("小于等于2000的一组");                     return text;                }           }      }      5.编写使用UDF      1、编程      2、把程序到出为jar包放到目标机器上去:      hive> add jar /home/beifeng/jars/lower.jar ;      3、创建临时函数:      hive> CREATE TEMPORARY FUNCTION my_lower AS ‘包名.类名';      4、使用指定函数:      hive> show fuctions ;      hive> select my_lower(ename) from emp ;
    转载请注明原文地址: https://ju.6miu.com/read-38175.html

    最新回复(0)