如何编写UDF我就不赘述了,网上资料大把。贴一个参考链接直接略过。
主要讨论两个点,是开发过程中遇到的难点。
1. UDF读取外部资源。
2. 外部资源存放位置。
为什么会遇到这两个问题?
开发UDF的目的就是为了扩展数据库一些没有的功能。常用功能例如count,sum这些,但是偶尔会遇到一些复杂的计算数据库没有直接实现的函数,解决方法一是直接读取数据然后用程序去二次处理但是时间比较慢,解决方法二就是根据需求开发对应的UDF,在查询语句中直接运算出结果。
我遇到这个问题是在过根据用户ip进行地域统计的时候。由于ip不能直接与ip库进行对应,所以需要将ip进行转换,可以选择直接转换成bigint然后与ip库中的起止ipnum进行比较得到省id。
这种方法的UDF开发比较简单,只需要读取String ip然后返回long int就可以了。剩下的交由数据库处理。但是实际使用中,这样的方式非常缓慢。主要原因是ip库与联合查询的日志从数量级上就差别很大,数据倾斜非常厉害,往往一天的数据可能跑两天都不能结束!!这样的效率,无论如何都是没法接受的。
转变
思考了一段时间后,决定重写UDF。先前的方法主要考虑不想重整ip库的格式,所以思路被限制。目前的第二种方法是将ip库重构之后使用的。
重构ip库+折半查找=新的UDF。
可是新的UDF面临另外一个问题就是,重构的ip库需要作为外部资源在UDF内部进行调用。这一点是之前没遇到过的。【吐槽】baidu之后发现貌似没有发现可行的方法,果然还是google好用。。【吐槽完】
首先外部资源要在运行之前添加,使用命令add jar [jar file]或者add file [file]在hive中进行临时注册。
UDF中内部调用的文件地址直接用本地文件地址表示。例如: String filepath = "/home/dev/test/test.txt";上传至hive之后,外部文件地址只需改成String filepath = "./test.txt";即可。
文献转自:http://blog.sina.com.cn/s/blog_b88e09dd01014grp.html
相关推荐
hive编写 udf 至少需要引入的jar包:hive-exec-xxx.jar 和 hadoop-core-xxx.jar
Hive UDF 说明书,官方指定文档。Hive_LanguageManual_UDF
因为项目需要使用到python udf 工hql调用 ...2.UDF中内部调用的文件地址直接用本地文件地址表示。例如: String filepath = “/home/dev/test/test.txt”;上传至hive之后,外部文件地址只需改成String fil
大数据的hive资源的详细代码设计以及分享,望博友相互交流
主要介绍了大数据 java hive udf函数(手机号码脱敏),的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
hive的udf函数实现
通用hive udf 源码,想要开发hadoop hive 的开发者 可以下载试看
udf开发–做个简单脱敏udf保留前5位,后面全部替换成*****
NexR Hive UDF 关于 NexR Hive UDF是Hive用户定义功能的集合。 执照 快速开始 $ git clone https://github.com/nexr/hive-udf.git $ cd hive-udf $ mvn clean package or $ ant -Dhive.install.dir=../hive/build/...
详细介绍如何开发hive自定义永久函数,配套有测试数据
Spark Hive UDF示例 建立项目 mvn clean package 将spark-hive-udf-1.0.0-SNAPSHOT.jar复制到边缘节点临时目录 spark-hive-udf]# cp target/spark-hive-udf-1.0.0-SNAPSHOT.jar /tmp 通过提供罐子来启动火花壳 spark...
java6 string源码 [TOC] jet-hive-udf 简介 jet-hive-udf 包含了一些有用的hive ...B=jet-hive-udf-${version}.jar]文件.其中A是包括所有依赖包的jar, B是最小编译jar文件 你也可以直接在发布页下载打
Hive UDF UDF 聚合 UDF Finds MIN, MAX and SUM from array of Struct Objects based on a field. 排序 UDF Returns sorted array of Struct objects for an array of Struct Objects based on a field. 日期 ...
hiveUDF-1.0-SNAPSHOT.jar
地址转换成经纬度+两地址间距离计算+省市区位置解析(Java代码) Hive自定义函数的封装
java sql笔试题示例 Hive UDF 项目 介绍 该项目只是一个示例,包含多个 (UDF),用于 Apache Spark。...它旨在演示如何在 ...Hive UDF ...Hive UDF?...Hive UDF ...UDF ...UDF,它必须: ...调用 Hive UDF。 您不能将其作为来自 D
本文档是关于hadoop中HDFS的文件读写操作的一份ppt,适用于学习hadoop新手.
hive java开发驱动包列表hive-common-2.3.4.jarhive-exec-2.3.4.jarhive-jdbc-2.3.4.jarhive-llap-client-2.3.4.jarhive-llap-common-2.3.4.jarhive-llap-server-2.3.4.jarhive-llap-tez-2.3.4.jarhive-metastore-...
HiveUDF 此Hive UDF示例代码包含2个函数:MyUpper()和MyContains() 它们在Hive 0.12、0.13和1.0中进行了测试。 要使Hive UDF在Drill中工作,请关注以下博客:一种。 如何制作罐子mvn package ## b。 准备一个带...
NULL 博文链接:https://superlxw1234.iteye.com/blog/1586377