Hive:UDTF 函数

在 Apache Hive 中,UDTF(User-Defined Table Generating Functions)是一种特殊的用户定义函数。提供了多种内置的 UDTF 函数,用于处理复杂的字符串和数据结构,以及用户可以编写自定义的 UDTF。

这些函数包括:

  • explode 和 posexplode:用于拆分数组或映射。
  • json_tuple 和 get_json_object:用于处理 JSON 格式的数据。
  • parse_url_tuple:用于处理 URL 格式的数据。
  • inline:用于拆分嵌套的数组或映射。
  • stack: 将多个值堆叠成多行。

常见的内置 UDTF

explode
  • 用途 :将数组或映射中的每个元素拆分成独立的行。

  • 语法 :

    sql 复制代码
    explode(array|map)
  • 示例 :

    sql 复制代码
    select id, value
    from src lateral view explode(array_column) exploded_table as value;
posexplode
  • 用途 :类似于 explode,但同时生成每个元素的位置索引。

  • 语法 :

    sql 复制代码
    posexplode(array|map)
  • 示例 :

    sql 复制代码
    select id, pos, value
    from src lateral view posexplode(array_column) exploded_table as pos, value;
inline
  • 用途 :将数组中的每个元素(假设每个元素是一个数组或映射)拆分成独立的行。

  • 语法 :

    sql 复制代码
    inline(array<struct>)
  • 示例 :

    sql 复制代码
    select id, col1, col2
    from src lateral view inline(array_column) exploded_table as col1, col2;
stack
  • 用途 :将多个值堆叠成多行。

  • 语法 :

    sql 复制代码
    stack(n, expr1, expr2, ...)
  • 示例 :

    sql 复制代码
    select * from (select stack(2, 'a', 1, 'b', 2)) tmp;

json_tuple
  1. 用途 :从 JSON 字符串中提取多个字段。

    • 语法 :

      复制代码
      json_tuple(json_string, field1, field2, ...)
    • 示例 :

      sql 复制代码
      select id, name, age
      from src
      lateral view json_tuple(json_column, 'name', 'age') jt as name, age;
get_json_object
  • 用途 :从 JSON 字符串中提取单个字段。

  • 语法 :

    sql 复制代码
    get_json_object(json_string, path)
  • 示例 :

    sql 复制代码
    select id, get_json_object(json_column, '$.name') as name
    from src;
parse_url_tuple
  • 用途 :从 URL 字符串中提取多个字段。

  • 语法 :

    sql 复制代码
    parse_url_tuple(url, part1, part2, ...)
  • 示例 :

    sql 复制代码
    select id, scheme, host, path
    from src lateral view parse_url_tuple(url_column, 'scheme', 'host', 'path') pu as scheme, host, path;
相关推荐
泡干脆面就番茄1 天前
Hive入门:架构解析与安装部署实录
大数据·数据仓库·hive·hadoop·架构
yyk333241 天前
Hive架构
hive·hadoop·架构
古法老登瞎折腾2 天前
Hive 源码导读(三):都是 SELECT,为什么有的查询不需要 YARN?
数据仓库·hive·hadoop
troy1282 天前
Java Web 常见面试题(2026 最新整理)
java·前端·hive
高级程序源2 天前
hive电商平台商品销售数据分析与趋势预测45659-计算机课程设计、毕业设计
vue.js·hive·spring boot·mysql·数据分析·django·课程设计
陈年老古董2 天前
Hive 函数学习笔记(下):窗口函数与经典案例
hive·笔记·学习
爱吃火鸡面呀2 天前
DataX 实战:使用 HDFS Reader 读取 Hive ORC 表并输出到 Stream
hive·hadoop·hdfs
yumgpkpm2 天前
CDP 7.3.1(Cloudera Runtime 7.3.1)VS Acceldata ODP 3.3.6.4 核心引擎详细版本对比
大数据·hive·hadoop·postgresql·zookeeper·spark·hbase
yumgpkpm4 天前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
陈年老古董4 天前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习