如果您的代码或函数中需使用MaxCompute资源文件,则需先创建或上传资源至目标工作空间后再引用。您可通过MaxCompute的SQL命令上传与管理资源,也可使用DataWorks的可视化方式创建。本文为您介绍如何使用DataWorks可视化方式创建资源并在节点中使用,以及基于资源注册函数。

前提条件

  • 工作空间已绑定引擎

    工作空间配置页面绑定MaxCompute引擎后,数据开发(DataStudio)页面才会显示MaxCompute目录。详情请参见创建并管理工作空间

  • 已创建业务流程

    DataWorks使用业务流程存放创建的资源。因此,创建资源前需先创建业务流程。详情请参见创建业务流程

  • 已创建相应节点

    创建的资源需被相应的节点引用。引用前您需根据业务需求创建合适的节点,详情请参见创建ODPS SQL节点

背景信息

DataWorks支持将文本文件、Python代码以及.zip.tgz.tar.gz.tar.jar等压缩包,作为不同类型的资源上传至MaxCompute,在用户自定义函数UDF(User Defined Function)及MapReduce的运行过程中读取、使用。各类型资源的介绍如下:
  • Python:您编写的Python代码,用于注册Python UDF函数。
  • JAR:编译好的Java JAR包,用于运行Java程序。
  • Archive:通过资源名称中的后缀识别该资源为哪种压缩类型。目前支持的压缩文件类型包括.zip.tgz.tar.gz.tar.jar
  • File:File资源仅支持.zip.so.jar类型。
    说明 新建File类型资源时,选中大文件,可上传超过500KB的本地资源文件。
创建并使用资源的基本流程如下:
  1. 创建或上传资源
  2. 节点使用资源
  3. 使用资源注册函数
  4. 其他资源管理操作
此外,您还可使用命令查看资源,或添加引擎资源至DataWorks数据开发进行管理,详情请参见附录一:通过命令查看引擎项目中的资源附录二:添加引擎资源至DataWorks进行管理

使用限制

  • 资源大小

    目前最大可通过DataWorks直接上传200MB的资源。详情请参见MaxCompute资源管理

  • 资源发布
    若您使用的是标准模式的工作空间,则需将资源发布至生产环境,发布后生产环境的项目才会存在该资源。
    说明 不同环境的引擎信息存在差异。请先明确相应环境的引擎信息,该操作将影响您查询对应环境的表、资源等。查看不同环境对应的MaxCompute引擎信息,详情请参见绑定MaxCompute引擎
  • 资源管理

    DataWorks仅支持使用可视化方式,查看与管理通过DataWorks可视化方式上传的资源。若通过其他工具(例如,MaxCompute Studio)添加至MaxCompute引擎的资源,需通过DataWorks的MaxCompute资源功能手动加载至DataWorks,加载后才可在DataWorks查看并进行相关管理操作。详情请参见MaxCompute资源管理

创建或上传资源

DataWorks支持通过新建资源或上传已有资源两种方式,生成DataWorks中需使用的资源,使用哪种方式请以各类型资源的实际创建界面为准。

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的数据开发
  2. 创建资源。
    您可在具体业务流程,根据业务需要创建目标类型资源。创建入口及步骤如下图。创建资源
    说明 若未新建业务流程,请参考创建业务流程新建。
  3. 配置资源信息。
    根据业务需求配置资源相关信息。此处以创建Python资源示例。不同类型资源的配置项存在差异,请以实际界面为准。资源信息
    说明
    • 新创建的JAR资源如果未在MaxCompute(ODPS)客户端上传过,则需勾选上传为ODPS资源,如果该资源已上传至MaxCompute(ODPS)客户端,则需取消勾选上传为ODPS资源,否则上传均会报错。
    • 资源名称无需与上传的文件名称保持一致。
    • JAR资源的后缀为.jar,Python资源的后缀为.py
  4. 可选:编写资源代码。
    如果您是上传已有资源,则请忽略该步骤。
    示例在新建的Python资源内编写如下Python资源代码。实际使用时,请编写所需功能的对应代码。
    from odps.udf import annotate
    @annotate("string->bigint")
    class ipint(object):
        def evaluate(self, ip):
            try:
                return reduce(lambda x, y: (x << 8) + y, map(int, ip.split('.')))
            except:
                return 0
  5. 提交并发布资源。
    单击工具栏中的提交图标,提交资源至调度开发服务器端。
    说明 若生产任务需使用该资源,则还需将该资源发布至生产环境。详情请参见发布任务

节点使用资源

DataWorks资源创建后,需被相应节点引用。节点成功引用资源后会显示@resource_reference{"资源名称"}格式代码。各类型节点显示格式存在差异,请以实际界面为准。例如,PyODPS 2节点显示的样式为##@resource_reference{"资源名称"}
说明 若还未创建节点,请参考创建ODPS SQL节点新建。
引用步骤如下图。资源加载

使用资源注册函数

使用资源注册函数前,需先参考创建并使用MaxCompute函数新建函数。在函数配置界面,输入已创建的资源名称,如下图所示。使用资源注册函数

查看MaxCompute系统自带的函数,详情请参见函数列表

查看在MaxCompute计算引擎中存在的函数、函数的变更历史等操作,详情请参见MaxCompute函数管理

其他资源管理操作

右键单击目标资源,即可执行更多资源相关操作。资源管理操作重点说明:
  • 删除资源

    此处仅删除开发环境对应引擎项目中该资源。若需删除生产环境下该资源,则需进行任务发布,将资源删除操作发布至生产环境,发布成功后,生产环境该资源才会同步删除。详情请参见发布任务

  • 资源版本对比与版本回滚
    您可单击历史版本,查看已保存或已提交的版本,并对比不同版本的资源变更情况。
    说明 版本对比时,至少需选择两个版本进行比对。
    版本对比

附录一:通过命令查看引擎项目中的资源

常用资源相关操作命令如下表。
命令描述
list resources;查看开发项目中的所有资源。
use 生产项目名称;list resources;查看生产项目中的所有资源。
desc resource <resource_name>;查看指定资源的详细信息。
更多命令操作,详情请参见资源操作

附录二:添加引擎资源至DataWorks进行管理

可通过MaxCompute资源功能,将不超过200MB的MaxCompute引擎资源加载至DataWorks进行可视化管理,详情请参见MaxCompute资源管理