`
qindongliang1922
  • 浏览: 2171178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117078
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125422
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59492
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71017
社区版块
存档分类
最新评论

hive自定义udf实现md5功能

    博客分类:
  • Hive
阅读更多
Hive自定义UDF实现md5算法

Hive发展至今,自身已经非常成熟了,但是为了灵活性,还是提供了各种各样的 插件的方式,只有你想不到的,没有做不到的,主流的开源框架都有类似的机制,包括Hadoop,Solr,Hbase,ElasticSearch,这也是面向抽象编程的好处,非常容易扩展。

最近在使用hive1.2.0的版本,因为要给有一列的数据生成md5签名,便于查重数据使用,看了下hive的官网文档发现是支持的,后来在Hue里面试了下,发现不支持,还以为是Hue的问题于是在后台hive命令行里面试了下,发现同样不支持,官网的文档应该是Hive2.x的了所以不支持也有可能,但也没必要为了使用个md5函数就把hive升级到最新版本,那样有点本末倒置,那就写个UDF解决吧,以前写过Pig的UDF,非常简单,Hive的应该也不会太难,看了官网文档,果然非常easy,下面看下步骤:

(1) 继承UDF类,定义evaluate方法

注意,这里用的是maven项目,只需要引入hive-exec包即可:

<dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>1.2.1</version>
            <scope>provided</scope>
        </dependency>

evaluate方法并不是重写的方法,而是一个新的方法,Pig里面是需要重写exec方法,来完成自定义逻辑的,代码如下:
package com.easy.md5;
import com.google.common.base.Strings;
import com.google.common.hash.Hashing;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
 * Created by qindongliang on 2016/5/23.
 * Hive自定义UDF,计算md5值
 */
public class MD5 extends UDF {
    /**
     * @param s 传入参数
     * @return md5值
     */
    public String evaluate(final String s) {
        if(Strings.isNullOrEmpty(s.trim())){
            return null;
        }
        return Hashing.md5().hashString(s.trim()).toString();
    }
}

(2)注册Hive的UDF的jar包

程序完成后,打包成jar,然后上传到对应的机器上,开始注册自己的UDF函数,这里有两种方式:

A:临时注册

执行hive命令,进入终端:

add jar /home/hive/udfs/hive-md5-guava-1.0.0.jar;
create temporary function md5 as 'com.easy.md5.MD5';
select md5('hadoop');
--结果: 3abb766da6c2c2d7739f3cb7799a4caa



B:永久注册(hive0.13之后支持)

在linux上,上传jar包至HDFS中

hadoop fs -put hive-md5-guava-1.0.0.jar /user/tez/

进入hive终端
CREATE FUNCTION md5 AS 'com.easy.md5.MD5' USING JAR 'hdfs:///user/tez/hive-md5-guava-1.0.0.jar' ;
select md5('hadoop');
--结果: 3abb766da6c2c2d7739f3cb7799a4caa
--删除临时函数
DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
--删除永久函数
DROP FUNCTION [IF EXISTS] function_name;
--重新加载函数 hive1.2.0之后支持
RELOAD FUNCTION;

这样就不用每次打开终端都需要注册了

(3)如何在Hue中注册

Hue是一款基于Web可视化提交任务的框架,由python编写,如果想要在hue中,使用自定义的UDF函数,需要稍作配置,否则使用过程中可能会报错,即使你在服务端已经注册过了。




有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

  • 大小: 25.3 KB
0
1
分享到:
评论

相关推荐

    hive自定义UDF编写函数.docx

    本文主要讲解了 Hive 中自定义 UDF 函数的编写方法,包括创建 UDF 类、实现自定义函数逻辑、编译和打包 UDF jar 包、上传至 Hive 服务器并注册自定义函数。 一、创建 UDF 类 为了实现自定义 UDF 函数,需要创建一...

    HIVE自定义UDF函数

    而自定义用户定义函数(UDF)是 Hive 中的一个重要功能,允许用户根据自己的需求编写自定义函数,以便在 Hive 查询中使用。 如何在 Hive 中创建自定义 UDF 函数: 步骤一:编写 Java 程序 首先,您需要编写一个 ...

    hive自定义udf函数实战

    一、UDF相关概念 ...如果udf嵌套复杂,可以重写一个嵌套层数较少且可以实现相同功能的udf,使性能成倍提升 针对过滤类的udf,将过滤率高的放在前面,减少中间结果,避免不必要的计算 二、UDF的使用 1、建hive表

    Hive的Udf函数进行数据脱敏

    总结来说,通过自定义UDF,我们可以方便地在Hive中实现数据脱敏功能,以保护敏感信息。这个过程涉及到Java编程、Hive API的使用以及SQL查询的编写。在实际应用中,可能需要根据业务需求调整UDF的行为,例如改变保留...

    Spark不能使用hive自定义函数.doc

    假设有一个 Hive UDF 名为 `my_udf`,其功能是计算两个整数之和。为了能够在 Spark 中使用该 UDF,可以按照以下步骤操作: 1. **准备 Hive UDF**:首先确保该 UDF 已经被正确地部署到了 Hive 中。 2. **打包 Hive ...

    hive-udf(两地址间距离计算+省市区位置解析(Java代码))

    总的来说,这个“hive-udf”项目提供了一种有效的方法,通过自定义Java UDF扩展Hive的功能,实现了地址解析和距离计算,这对于处理涉及地理位置信息的大数据任务非常有用。这不仅能够帮助分析人员更准确地理解数据,...

    hive UDF需要jar包

    在Hive中,UDF(User Defined Functions)是用户自定义函数,允许开发人员扩展Hive的内置功能,以满足特定的数据处理需求。Hive UDF的实现通常涉及到编写Java代码,并将其打包成JAR(Java Archive)文件,然后在Hive...

    hive的udf功能

    大数据的hive资源的详细代码设计以及分享,望博友相互交流

    * hive脱敏UDF函数 *对一些敏感信息进行脱敏处理,替换位置可自定义,脱敏符号可随机也可自定义

    * 功能:对一些敏感信息进行脱敏处理,替换方式可选择自定义替换,如'#','*'等,,如不指定脱敏符号,使用个随机字符替换 * 脱敏位置可自定义,不指定位置,会对数据进行全脱敏 * 例如身份证信息: ...

    hive的自定义函数

    然而,在某些情况下,Hive内置的功能可能不足以满足特定需求,这时就需要使用自定义函数(UDF)来扩展Hive的能力。 #### 二、Hive UDF概述 Hive支持三种类型的自定义函数:用户定义的函数(UDF)、用户定义的聚合...

    hive的UDF的编写.docx

    在hive中,UDF是用户自定义的函数,可以根据业务需求编写自定义的函数来实现特定的数据处理逻辑。UDF可以将复杂的数据处理逻辑封装在一个函数中,以便于在hive查询中使用。 使用Java编写hive的UDF 使用Java编写...

    HIve UDF 说明书

    Hive UDF(User-Defined Functions,用户定义函数)是Hive中强大的功能,允许用户在Hive查询中使用自定义的函数来进行更复杂的操作。Hive是一个建立在Hadoop基础上的高级数据仓库工具,它允许用户使用类似SQL的语言...

    hive自定义函数demo

    本示例“hive自定义函数demo”将探讨如何在Hive中开发和使用自定义函数(UDF),这对于扩展Hive的功能和适应特定业务需求至关重要。下面,我们将深入学习与Hive自定义函数相关的知识。 1. **什么是Hive UDF?** ...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    - UDF定义:用户可以编写Java代码实现特定功能的函数,然后在Hive SQL中调用。 - UDAF(用户定义的聚合函数):用于处理一组输入值并返回单个值,如自定义平均值、众数等。 - UDTF(用户定义的表生成函数):将一...

    Hive_UDF.rar_hive_sqoop

    总之,“Hive_UDF.rar_hive_sqoop”压缩包提供了关于如何利用 Hive 自定义函数增强数据分析能力,以及如何借助 Sqoop 实现数据在 RDBMS 和 Hadoop 生态系统之间的流动的详细信息。这些工具的结合使用,为大数据处理...

    dataiku hive udf

    "dataiku-hive-udf-master"中的源码可以帮助开发者了解如何实现这些功能,以及如何在Hive中有效地利用自定义函数进行数据分析。此外,通过阅读和调试这些源码,还可以提升对Hive内部工作原理的理解,这对于解决实际...

    各种情况手机号清洗udf函数(hive impala)

    我们将涵盖正则表达式在手机号码清洗中的应用,以及如何编写和使用Java UDF在Hive和Impala中实现这个过程。 1. **手机号码格式问题**:手机号码可能因历史记录、输入错误或不同的国家/地区标准而呈现多种格式。例如...

    hive-udf:hive自定义函数

    hive-udfhive自定义函数主要实现hive3种自定义函数1,udf函数,主要用于处理一对一数据处理2,udtf函数,主要用于处理一对多数据处理2,udaf函数,主要用与处理多对一数据聚合处理

    hive 创建自定义函数 和 hive加载说明

    总的来说,理解并掌握Hive创建自定义函数和加载机制,能极大地拓展Hive的功能,适应各种复杂的数据处理需求。同时,合理使用动态分区加载能够提高数据加载的效率和便利性,是每个Hive用户都应该了解的重要知识点。

    Hive UDF开发

    Hive UDF是指用户可以根据自己的业务需求,自定义Java类来实现特定的数据处理逻辑,并将其封装成函数的形式供Hive SQL使用。根据功能不同,Hive UDF主要分为三类:基本UDF、通用UDF (GenericUDF) 和表生成UDF (UDTF)...

Global site tag (gtag.js) - Google Analytics