A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦缠绕的时候 黑马粉丝团   /  2018-10-9 09:40  /  990 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java的类中可以定义静态代码块, 每次我们使用hive的create [temporary] function语句时,会调用UDF中的静态代码块.
静态代码块是类加载时用到调用的.

UDF并不是每有一行记录就会实例化一次, 而是复用的. Hive会在HiveQL语句运行之初就实例化若干个UDF的实例.

由于Hive的join语句对条件限制比较严格, 不能随意使用大于或小于作join的条件.所以UDF有时可以用来代替join.
例如有两张表A表大, B表小, 都一列时间. 现在要在两张表的时间列上join, join的条件不是两列时间相等, 而是两列时间最接近.
这时候就可以使用UDF来代替join
构造函数:
把B表(因为它是小表), 相关列读入内存
(注意Hive的compilation lock, 在UDF中执行HiveQL, 要开启hive.driver.parallel.compilation=true)

evaluate函数:
遍历A表, 返回对应最接近日期.
---------------------本文来自 爱知菜 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/rav009/art ... 984?utm_source=copy

1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马