1. 在项目中你是否自定义过 UDF、UDTF 函数?2. 以及用他们处理了什么问题?
1. 自定义过
2. 用 UDF 函数解析公共字段;用 UDTF 函数解析事件字段(如将一行炸裂为多行,像数组中的数据类型为数组,可以炸裂出来);
3. 说说自定义函数的步骤?
(1)自定义 UDF:继承 GenericUDF,重写 evaluate 方法,然后打包加载到 hive 中,在 hive 中创建函数导入自定义 UDF 的全类名即可。
(2)自定义 UDTF:继承 GenericUDTF,重写 3 个方法:initialize(自定义输出的列名和类型)、process(将结果返回 forward(数据集))、close,然后打包加载到 hive 中,在 hive 中创建函数导入自定义 UDTF 的全类名即可。
注意:创建自定义函数的时候,有临时和永久之分,临时的就是当前会话有效,关闭会话就失效;永久的就是永久有效。创建函数的时候加 temporary 则为临时,不加则为永久。
4. 为什么要自定义 UDF/UDTF?
自定义 UDF/UDTF 是一个非常强大的工具,可以帮助我们解决数据分析中遇到的各种问题,从而提高数据处理的效率和精度。
当数据处理需求多样化、数据清洗的时候,我们可以自定义函数来解决我们的特殊需求。
同时因为是自定义函数,我们可以自己埋点 Log 打印日志,出错或者数据异常的话,也方便我们调试。