开发者社区 问答 正文

MaxCompute工具及下载:MaxCompute Studio:开发 Java 程序:开发和调试 UDF



创建完成 MaxCompute Java Module 后,即可开发 UDF。

操作步骤


  1. 展开已创建的 MaxCompute Java Module 目录,导航至 src -> new,单击 MaxCompute Java。如下图所示:

  2. 填写弹出框中的相关内容,单击 OK。如下图所示:
    • Name:填写创建的 MaxCompute Java Class 名称。
    • Kind:选择类型。目前支持的类型有:自定义函数(UDF/UDAF/UDTF)、MapReduce(Driver/Mapper/Reducer)、非结构化开发(StorageHandler/Extractor)等。

  • 创建成功后,即可在 IntelliJ IDEA 中开发、编辑、测试 Java 程序。


  • 调试 UDF


    开发 UDF 完成后,即可通过单元测试和本地运行两种方式进行测试,看是否符合预期。

    单元测试


    在 examples 目录下有各种类型的单元测试示例,可参考示例编写自己的 Unit Test。


    本地运行


    本地运行 UDF 时,需要指定运行数据源,有以下两种方式设定测试数据源:

    • MaxCompute Studio 通过 Tunnel 服务自动下载指定项目下的表数据到 warehouse 目录下。

    • 提供 Mock 项目及表数据,您可参考 warehouse 下的 example_project 自行设置。


    操作步骤


    1. 右击 UDF 类,单击 运行,弹出 run configuration 对话框。

      UDF/UDAF/UDTF 一般作用于 select 子句中表的某些列,需要配置 MaxCompute project,table 和 column(元数据来源于 project explorer 和 warehouse 下的 Mock 项目)。

    2. 单击 OK。

      注意:
      • 如果指定项目下的表数据未被下载到 warehourse 中,需要先下载数据。默认下载100条,如需更多数据,请自行通过console的tunnel命令或studio的表下载功能。
      • 如果采用 Mock 项目或已下载数据,则直接运行。
      • UDF 的 local run 框架会将 warehouse 中指定列的数据作为 UDF 的输入,开始本地运行 UDF,您可以在控制台看到日志输出和结果打印。


    本地 warehouse 目录


    本地 warehouse 用于存储表(包括 meta 和数据)或资源,用于本地执行 UDF 或 MR。warehouse 目录如下图所示:

    注意:
    • warehouse 目录下依次是项目名,tables,表名,表 schema 和 sample data。
    • schema 文件依次配置项目名,表名,以及列名和类型(冒号分隔),分区表还需配置分区列(非分区表参考 wc_in1,分区表参考 wc_in2)。
    • data 文件采用标准 csv 格式存储表的 sample 数据:特殊字符为逗号,双引号和换行(\n 或 \r\n)
    • 列分隔符为逗号,行分隔符为 \n 或 \r\n
    • 如果列内容里包含特殊字符,需要在该列内容前后加上双引号,例如:3,No -> “3, No”
    • 如果列内容包含双引号,则每个双引号转义成两个双引号,例如:a”b”c -> “a””b””c”
    • \N 表示该列为 null,如果该列内容(string 类型)就是 \N,需要转换为 “””\N”””
    • 文件字符编码为UTF-8

    展开
    收起
    行者武松 2017-10-24 11:00:16 2817 分享 版权
    0 条回答
    写回答
    取消 提交回答