数据岗位面试题更新 2026-08-05

请解释 Hive 中的 UDTF(User-Defined Table-Generating Functions)的概念,并说明实现一个 UDTF 的具体步骤和方法。

数据编码实现技术原理Apache Hive

考察说明

考查对 Hive 自定义函数体系中 UDTF 概念的理解和实现能力。

回答思路

  1. 【回答框架 1】UDTF 是 Hive 中用户自定义表生成函数,输入一行数据,输出多行或多列,常用于行转列场景,如 explode 函数。继承 GenericUDTF 类实现。
  2. 【回答框架 2】实现 UDTF 需继承 GenericUDTF,重写 initialize 方法定义输出列名和类型,process 方法处理输入并 forward 输出,close 方法做清理。
  3. 【回答框架 3】使用 @UDTFTypeAnnotation 注解指定输入输出类型,或通过 StructObjectInspector 定义。
  4. 【回答框架 4】实现后打包为 jar,在 Hive 中通过 ADD JAR 和 CREATE TEMPORARY FUNCTION 注册,即可在 SQL 中使用。
  5. 【关键点 1】UDTF 输入一行输出多行,用于行转列。
  6. 【关键点 2】继承 GenericUDTF,实现 initialize、process、close。
  7. 【关键点 3】通过别名指定输出列名,如 AS (col1, col2)。
  8. 【易错点 1】UDTF 不能在 select 子句中与其他字段同时使用,除非使用 lateral view。
  9. 【易错点 2】输出列类型需与 ObjectInspector 定义一致,否则报错。