DataWorks提供PyODPS 2节点类型,您可以在DataWorks上通过PyODPS语法进行PyODPS任务开发,PyODPS集成了MaxCompute的Python SDK。支持您在DataWorks的PyODPS 2节点上直接编辑Python代码,操作MaxCompute。

背景信息

  • DataWorks支持可视化创建Python资源,如果您需要在PyODPS节点中调用第三方包,请使用独享调度资源组并通过运维助手进行安装。
  • DataWorks运维助手中安装的Python第三方包,仅支持在DataWorks独享调度资源组本地运行PyODPS任务代码时引用,如果需要在MaxCompute的Python UDF中引用Python第三方包,详情请参见Python UDF使用第三方包
  • 如果您的PyODPS任务需要访问特殊的网络环境(如VPC网络或IDC网络中的数据源或服务等),请使用独享调度资源组,并参考网络连通解决方案打通独享资源组与目标环境的网络连通。
  • PyODPS语法及更多信息请参见PyODPS文档
  • PyODPS节点分为PyODPS 2和PyODPS 3两种,二者的区别在于底层Python语言版本不同。PyODPS 2底层Python语言版本为Python 2,PyODPS 3底层Python语言版本为Python 3,请您根据实际使用的Python语言版本创建PyODPS节点。

使用限制

  • DataWorks建议您在PyODPS节点内获取到本地处理的数据不超过50 MB,该操作受限于DataWorks执行资源的不同规格(包括公共调度资源组和独享调度资源组),处理的本地数据过多并超出操作系统阈值时可能发生OOM(Got killed)错误。请避免在PyODPS节点中写入过多的数据处理代码。详情请参见高效使用PyODPS最佳实践
  • 如果您发现有Got killed报错,即表明内存使用超限,进程被中止。因此,请尽量避免本地的数据操作。通过PyODPS发起的SQL和DataFrame任务(除to_pandas外)不受此限制。
  • 非自定义函数代码可以使用平台预装的Numpy和Pandas。不支持其他带有二进制代码的三方包。
  • 由于兼容性原因,在DataWorks中,options.tunnel.use_instance_tunnel默认设置为False。如果需要全局开启instance tunnel,需要手动将该值设置为True。
  • PyODPS 2节点底层的Python版本为2.7。
更多PyODPS节点使用与限制说明,请参见使用限制

使用流程

流程中关于PyODPS 2的使用示例请参见创建PyODPS 3节点
操作说明
新建PyODPS 2节点DataWorks提供PyODPS 2节点类型,集成了MaxCompute的Python SDK。您可以创建PyODPS节点直接编辑Python代码。
ODPS入口DataWorks的PyODPS 2节点中,将会包含一个全局的变量odpso,即ODPS入口,您无需手动定义ODPS入口。
执行SQLPyODPS 2支持ODPS SQL的查询,您可以在PyODPS节点中执行SQL。
设置运行参数您可以通过设置hints参数,来设置运行时的参数。参数类型是dict
读取运行结果您可以读取SQL执行结果。
DataFrame您还可以通过DataFrame的方式处理数据。
配置调度属性若节点需要周期性调度,您需要定义节点调度时的相关属性。
提交节点您可以提交节点,标准模式工作空间提交任务后,任务仅在开发环境生效,开发环境中的任务不进行自动调度,您需要通过任务发布流程,将任务发布至生产环境后,任务才会周期调度运行。

新建PyODPS 2节点

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的数据开发
  2. 鼠标悬停至新建图标,单击新建节点 > MaxCompute > PyODPS 2
    您也可以展开业务流程目录下的目标业务流程,右键单击MaxCompute,选择新建节点 > PyODPS 2

    如果您需要创建业务流程,请参见创建周期业务流程

  3. 新建节点对话框中,输入节点名称,并选择路径
  4. 单击确认

配置调度属性

单击节点编辑区域右侧的调度配置,在参数区域配置自定义参数,PyODPS节点与SQL节点定义变量的方式不同,详情请参见调度参数配置

与DataWorks中的SQL节点不同,为了避免影响代码,PyODPS节点不会在代码中替换 ${param_name}这样的字符串,而是在执行代码前,在全局变量中增加一个名为args的dict,调度参数可以在此获取。例如,在参数中设置ds=${yyyymmdd},则可以通过以下方式在代码中获取该参数。

print('ds=' + args['ds'])
ds=20161116
说明 如果您需要获取名为ds=${yyyymmdd}的分区,则可以使用如下方法。
o.get_table('table_name').get_partition('ds=' + args['ds'])

提交节点

重要 提交节点前,您需要设置重跑属性依赖的上游节点
  1. 单击工具栏中的提交图标。
  2. 提交新版本对话框中,输入备注
  3. 单击确认
如果您使用的是标准模式的工作空间,提交节点后,请单击右上角的发布。详情请参见发布任务

任务运维,详情请参见:周期任务基本运维操作

如何判断Python自定义脚本任务的成功完成

判断逻辑和shell节点一致,详情请参见: 如何判断Shell自定义脚本任务的成功完成

常见问题

PyODPS常见问题