本文为您介绍在依赖普通的Python脚本和开源三方包的场景下,如何使用DataWorks PyODPS节点调用第三方包。

依赖普通的Python脚本

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 创建Python资源。
    1. DataStudio(数据开发)页面,鼠标悬停至新建图标,单击MaxCompute > 资源 > Python
      您也可以展开业务流程目录下的目标业务流程,右键单击MaxCompute,选择新建 > 资源 > Python
    2. 新建资源对话框中,输入资源名称(示例为pyodps_packagetest.py),并选择目标文件夹
      注意 资源名称只能包含中文、字母、数字、点、下划线(_)、减号(-),且必须加后缀名.py
    3. 单击确定
    4. 在新建的Python资源中,输入需要引用的第三方包的代码,示例如下。
      # import os
      # print os.getcwd()
      # print os.path.abspath('.')
      # print os.path.abspath('..')
      # print os.path.abspath(os.curdir)
      
      def printname():
          print 'test2'
      print 123
    5. 单击工具栏中的提交图标。
  3. 创建PyODPS 2节点。
    1. 展开业务流程目录下的目标业务流程,右键单击MaxCompute,选择新建 > PyODPS 2
    2. 新建节点对话框中,输入节点名称(示例为pyodps_testpackage),并选择目标文件夹
      说明 节点名称必须是大小写字母、中文、数字、下划线(_)和小数点(.),且不能超过128个字符。
    3. 单击提交
  4. 打开PyODPS 2节点的编辑页面,右键单击目标Python资源名称,选择引用资源
    引用后,PyODPS 2节点中会自动写入引用语句##@resource_reference{"pyodps_packagetest.py"}引用资源
  5. 在PyODPS 2节点内输入引用第三方包的代码,示例如下。
    ##@resource_reference{"pyodps_packagetest.py"} #用于引用之前新建的Python资源,该语句必须添加。
    
    import sys
    import os
    sys.path.append(os.path.dirname(os.path.abspath('pyodps_packagetest.py'))) #引入资源至工作空间。
    import pyodps_packagetest #引用资源,资源名需要删除后缀.py。
    pyodps_packagetest.printname() #调用方法。
  6. 单击工具栏中的运行图标,在页面下方的运行日志区域查看结果。
    查看结果

依赖开源的三方包

如果您依赖一个开源的三方包,需要使用PIP安装,且需要满足以下条件:
  • 必须使用独享调度资源组,详情请参见新增独享调度资源组
  • 在独享调度资源组的运维助手中安装需要的三方包,详情请参见运维助手。PyODPS节点分为PyODPS 2和PyODPS 3:
    • 如果依赖PyODPS 2节点,请执行如下命令。
      pip install <需要安装的包> -i  https://pypi.tuna.tsinghua.edu.cn/simple
      执行命令后,如果提示需要升级PIP版本,请执行如下命令。
      pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
    • 如果依赖PyODPS 3节点,请执行如下命令。
      /home/tops/bin/pip3 install <需要安装的包> -i https://pypi.tuna.tsinghua.edu.cn/simple
      执行命令后,如果提示需要升级PIP版本,请执行如下命令。
      /home/tops/bin/pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
      如果使用PyODPS 3出现如下报错,请提交工单申请开启权限。
      "/home/admin/usertools/tools/cmd-0.sh:行3: /home/tops/bin/python3: 没有那个文件或目录"