Dataworks使用PyODPS | MaxCompute | pyodps | odps

一、使用限制

  • 使用方式限制

    • 如果您发现有Got killed报错,即表明内存使用超限,进程被中止。请避免在PyODPS节点中直接下载数据并在DataWorks中处理数据,建议将数据处理任务提交到MaxCompute进行分布式执行处理。
  • 包支持限制

    • DataWorks的PyODPS节点缺少matplotlib等包,如下功能可能受限:
    • DataFrame的plot函数。
    • DataFrame自定义函数需要提交到MaxCompute执行。由于Python沙箱限制,第三方库只支持所有的纯Python库以及NumPy,因此不能直接使用Pandas。
    • DataWorks中执行的非自定义函数代码可以使用平台预装的NumPy和Pandas。不支持其他带有二进制代码的第三方包。
    • DataWorks的PyODPS节点不支持Python的atexit包,请使用try-finally结构实现相关功能。
  • 读取数据记录数限制

    • DataWorks的PyODPS节点中,options.tunnel.use_instance_tunnel默认设置为False,即默认情况下,最多读取一万条数据记录。如果需要读取更多数据记录,需全局开启instance tunnel,即需要手动将options.tunnel.use_instance_tunnel设置为True

二、ODPS使用

2.1 ODPS入口

DataWorks的PyODPS节点中默认包含一个全局变量odps或者o,即为ODPS入口。您不需要手动定义ODPS入口,直接使用即可。

#查看表pyodps_iris是否存在
print(o.exist_table('pyodps_iris'))

2.2、执行SQL

在PyODPS节点中运行SQL命令:例如使用execute_sql()/run_sql()来执行SQL命令,当前主要支持运行DDL、DML类型的SQL命令

可以执行的SQL语句并非都可以通过入口对象的execute_sql()和run_sql()方法执行。在调用非DDL或非DML语句时,请使用其他方法。例如,调用GRANT或REVOKE语句时,请使用run_security_query方法;调用API命令时,请使用run_xflowexecute_xflow方法。

在PyODPS节点中读取SQL运行结果:例如使用open_reader()来读取SQL命令运行结果。但这个操作会造成数据下载。

2.3 DataFrame

  • 执行
    在DataWorks的环境里,DataFrame的执行需要显式调用立即执行的方法(如execute、persist等)。示例代码如下。
# 调用立即执行的方法,处理每条Record,打印出表pyodps_iris中iris.sepalwidth小于3的所有数据。
from odps.df import DataFrame
iris = DataFrame(o.get_table('pyodps_iris'))
for record in iris[iris.sepalwidth < 3].execute():  
    print(record)
  • 打印信息
    在DataWorks上默认打开options.verbose选项,即默认情况下,DataWorks的PyODPS节点运行过程会打印Logview等详细信息。您可以手动设置此选项,指定运行过程是否会打印Logview等详细信息。

2.3 获取调度参数

2.4 设置运行参数 hints

  • 运行任务时如果需要设置运行时参数,可以通过设置hints参数来实现,参数类型是dict。
o.execute_sql('select * from pyodps_iris', hints={'odps.sql.mapper.split.size': 16})
  • 也可以对全局设置sql.setting,设置后后续每次运行时都会添加相关的运行时参数。
from odps import options
options.sql.settings = {'odps.sql.mapper.split.size': 16}
o.execute_sql('select * from pyodps_iris')  #会根据全局配置添加hints

2.5 使用第三方包

DataWorks节点预装了以下第三方包,版本列表如下:

包名Python 3 节点版本
requests2.26.0
numpy1.18.1
pandas1.0.5
scipy1.3.0
scikit_learn0.22.1
pyarrow2.0.0
lz43.1.10
zstandard0.17.0

如果您需要使用上面列表中不存在的包,DataWorks节点提供了load_resource_package方法,支持从MaxCompute资源下载第三方包。使用pyodps-pack打包后,可以直接使用load_resource_package方法加载第三方包,之后就可以导入包中的内容。
关于pyodps-pack的使用方法请参见 PyODPS制作第三方包PyODPS使用第三方包

示例:

# 1.使用以下命令打包ipaddress。
pyodps-pack -o ipaddress-bundle.tar.gz ipaddress

# 2.上传并提交ipaddress-bundle.tar.gz作为资源后,
# 可以在PyODPS 3节点中按照下面的方法使用ipaddress包。
load_resource_package("ipaddress-bundle.tar.gz")
import ipaddress

# DataWorks限制下载的包总大小为100 MB。如果您需要跳过预装包的打包,
# 可以在打包时使用pyodps-pack提供的--exclude参数。
# 例如:下面打包方法排除了DataWorks环境中存在的numpy包和pandas包。
pyodps-pack -o bundle.tar.gz --exclude numpy --exclude pandas <YOUR_PACKAGE>

2.6 查看 PyODPS的版本

# 输入如下代码
import odps; print(odps.__version__)

# 返回结果示例
0.11.2.3

也可在PyODPS任务运行日志中查看PyODPS版本。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值