使用UDF处理数据

更新时间:
复制为 MD 格式

如果表格存储中的数据具有特殊结构(例如需要解析特定的JSON字符串),可以使用用户自定义函数(UDF,User Defined Function)对每一行数据执行自定义处理逻辑。

工作原理

UDF 运行在MaxCompute侧,而非表格存储侧。MaxCompute 从表格存储读取行数据,将数据传入 UDF,并将处理结果返回给 SQL 查询。开发流程为:用 Java 编写 UDF 逻辑,打包为 JAR 文件,注册到 MaxCompute,然后在 SQL 语句中调用。

前提条件

  • 已创建表格存储实例和数据表

  • 已创建MaxCompute项目,且项目具有访问该数据表的权限

  • 本机已安装 IntelliJ IDEA

    操作步骤

    1. 在 IntelliJ 中安装 MaxCompute-Java/MaxCompute-Studio 插件。具体操作,请参见安装MaxCompute Studio

      插件安装完成后,即可开始开发 UDF。

      下图为一个简单的 UDF 定义示例,功能为串接两个字符串。MaxCompute 支持更复杂的 UDF,包括自定义窗口执行逻辑等。更多信息,请参见开发UDFfig_udf_001

    2. 打包并将 JAR 文件上传至 MaxCompute。具体操作,请参见打包、上传及注册

    3. 运行 bin/odpscmd.bat,在 SQL 查询中调用 UDF。

      以下示例从 test_table 中取出 1 行数据,将 name 列两次传入 UDF,并将串接结果以 udf_test 返回。将 cloud_metric_extract_md5 替换为实际注册的函数名:

      -- 选出 1 行数据,将 name/name 传入 UDF,返回两个字符串的串接结果。
      select cloud_metric_extract_md5(name, name) as udf_test from test_table limit 1;                    

      返回结果如下:

      fig_udf_004