hive 的udf 函数使用

  • 1)依据课程讲解UDF编程案例,完成练习,总结开发UDF步骤,代码贴图,给予注释,重点
  • 2)更改emp 表中名字的大写给为小写。

一:hive 的udf 函数:

1.1 hive UDF 函数概述:

1. hive自带了一些函数比如:max/min 等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展。
2. udf 函数可以直接应用于select 语句,对查询结构做格式化处理之后,然后再输出内容。

1.2 hive 编写udf函数的时候需要注意的地方:

1. 自定义udf函数需要继承org.apache.hadoop.hive.ql.UDF
2. 需要实现evaluate 函数,evaluate 函数支持重载。
3. udf 必须要有返回类型,可以返回null,但是返回类型不能为void;
4. udf 常用Text/LongWrite 等类型,不推荐使用java类型。

1.3 hive 的udf 函数编写:

 1. 环境配置处理:
 更改repository源

cd .m2/
mv repository repository.bak
上传新的repository.tar.gz 包。
tar -zxvf repository.tar.gz
备份原有setting.xml 文件
cp -p setting.xml setting.xml.bak
cd /home/hadoop/yangyang/maven/conf
cp -p setting.xml setting.xml

1.4 更改maven源的配置:

在setting.xml 中<mirrors> ....</mirrors> 之间增加新的源仓库:

 <mirror>
       <id>nexus-osc</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
拷贝新的setting文件到maven 的配置文件中
cp -p .m2/setting.xml /home/hadoop/yangyang/maven/conf

1.5 更改eclipse的pom.xml 文件增加:

在原有的<dependencies>....</dependencies> 之间加上hive 的参数:
 <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>
  </dependencies>

二: 更改emp 表中名字的大写给为小写。

2.1 新建UDF包 编写lowerudf.java

package org.apache.hadoop.udf;

import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * New UDF classes need to inherit from this UDF class.
 */
public class LowerUDF extends UDF{
    /**
     * 1. Implement one or more methods named "evaluate" which will be called by Hive.
     *
     * 2. "evaluate" should never be a void method. However it can return "null" if needed.
     */
    public Text evaluate(Text str){
        // input parameter validate
        if(null == str){
            return null ;
        }

        // validate
        if(StringUtils.isBlank(str.toString())){
            return null ;
        }

        // lower
        return new Text(str.toString().toLowerCase()) ;
    }

    public static void main(String[] args) {
        System.out.println(new LowerUDF().evaluate(new Text()));
    }

}

2.2 导出jar包 到/home/hadoop/yangyang/hive/jars 下面:



2.3 执行lowerudf包 增加jar包与hive的关联:

add jar /home/hadoop/yangyang/hive/jars/lowerudf.jar
create temporary function my_lower as ‘org.apache.hadoop.udf.LowerUDF‘ ;
show functions;



2.3.1 销毁临时的udf 函数:

drop temporary function add_example;
<!--这里指my_lower 函数-->

2.4 执行my_lower 函数:

select my_lower(ename) from emp;


原文地址:http://blog.51cto.com/flyfish225/2097260

时间: 2024-10-06 15:38:02

hive 的udf 函数使用的相关文章

hive下UDF函数的使用

1.编写函数 [java] view plaincopyprint?package com.example.hive.udf;    import org.apache.hadoop.hive.ql.exec.UDF;  import org.apache.hadoop.io.Text;    public final class LowerCase extends UDF {    public Text evaluate(final Text s) {      if (s == null)

hive 部署UDF函数

一.临时添加UDF函数 1.上传jar包至hive服务器 2.hive shell执行如下命令: add jar /home/hive/hivejar/billing-on-hive-1.0.jar create temporary function strip as 'com.tsingzone.bigdata.billing.GetOperator'; 注: strip:自定义函数名 com.tsingzone.bigdata.billing.GetOperator:类名 仅对当前shell

hive的UDF 函数(User-Defined-Function)

UDF函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容. 关系运算 等值比较: = 语法: A = B 操作类型: 所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive> select 1 from dual where 1=1; 1 不等值比较: <> 语法: A <> B 操作类型: 所有基本类型 描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL:如果表达式A与表达式B不相等,则为T

hive UDF函数

?虽然Hive提供了很多函数,但是有些还是难以满足我们的需求.因此Hive提供了自定义函数开发 ?自定义函数包括三种UDF.UADF.UDTF ?UDF(User-Defined-Function) ?UDAF(User- Defined Aggregation Funcation) ?UDTF(User-Defined Table-Generating Functions)  用来解决 输入一行输出多行(On-to-many maping) 的需求. 准备工作: UDF开发所需要依赖的jar包

如何编写自定义hive UDF函数

Hive可以允许用户编写自己定义的函数UDF,来在查询中使用.Hive中有3种UDF: UDF:操作单个数据行,产生单个数据行: UDAF:操作多个数据行,产生一个数据行. UDTF:操作一个数据行,产生多个数据行一个表作为输出. 用户构建的UDF使用过程如下: 第一步:继承UDF或者UDAF或者UDTF,实现特定的方法. UDF实例参见http://svn.apache.org/repos/asf/hive/trunk/contrib/src/java/org/apache/hadoop/hi

Hive的UDF(用户自定义函数)开发

当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function). 测试各种内置函数的快捷方法: 创建一个 dual 表 create table dual(id string); load 一个文件(只有一行内容:内容为一个空格)到 dual 表 新建 JAVA maven 项目 添加依赖 <dependencies> <dependency> <groupId>org.apache.hiv

UDF函数,hive调用java包简单方法

UDF函数,是hadoop在强大的大数据批量导入导出操作之余,为了满足复杂的数据逻辑操作留下的接口 核心思想:不管是UDF函数还是自定义处理jar包,都是要放置在hadoop服务器上的,相当于hadoop多出了一个自定义的处理数据的方法 1)其中调用的不管是参数还是数据库都是以hadoop本身的服务器环境路径为本地路径,而不是自己操作的java环境 2) 现在记录下2种近期使用过的简单方法,非常简单. 1.函数调用 1)导入UDF架包,保证引用UDF时不会编译报错 2)java中建任意类继承UD

hive 中简单的udf函数编写

1.注册函数,使用using jar方式在hdfs上引用udf库. $hive>create function formattime as 'com.it18zhang.applogs.udf.FormatTimeUDF' using jar 'hdfs://hadoop01/app/app-logs-hive-1.0-SNAPSHOT.jar';2.注销函数,只需要删除mysql的hive数据记录即可. delete from func_ru ; delete from funcs ;show

Hive 10、Hive的UDF、UDAF、UDTF

Hive自定义函数包括三种UDF.UDAF.UDTF UDF(User-Defined-Function) 一进一出 UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出.Count/max/min UDTF(User-Defined Table-Generating Functions)  一进多出,如lateral view explore() 使用方式 :在HIVE会话中add 自定义函数的jar文件,然后创建function继而使用函数