在DSW实例中,当您想要读取MaxCompute表的数据时,可以使用PyODPS来实现。本文介绍如何使用PyODPS读取MaxCompute表数据。
前提条件
在开始执行操作前,请确认您已经完成以下准备工作:
已开通MaxCompute,详情请参见开通MaxCompute和DataWorks。
用户账号已有MaxCompute项目操作权限。如果您使用主账号登录DSW实例,则无需授权。如果您使用的为RAM账号,可以参考如下授权步骤。
安装PyODPS环境前,您可先查看下Python的版本,建议Python版本为3.6及以上版本,不建议使用2.7及以下版本。
操作步骤
您可以使用PyODPS与MaxCompute或Designer中的数据进行通信。PyODPS是阿里云提供的Python SDK,详情请参见PyODPS开发文档。
安装PyODPS。
在DSW的Terminal中,执行如下命令。
pip install pyodps
执行如下命令检查安装是否成功。若无返回值和报错信息表示安装成功。
python -c "from odps import ODPS"
如果您使用的Python不是系统默认的Python版本,安装完PIP后,您可以执行如下命令进行Python版本切换。
/home/tops/bin/python3.7 -m pip install setuptools>=3.0 #/home/tops/bin/python3.7为安装的python路径
通过SQL读取MaxCompute数据。
import numpy as np import pandas as pd import os from odps import ODPS from odps.df import DataFrame # 建立链接。 o = ODPS( os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), project='your-default-project', endpoint='your-end-point', ) # 读取数据。 sql = ''' SELECT * FROM your-default-project.<table> LIMIT 100 ; ''' query_job = o.execute_sql(sql) result = query_job.open_reader(tunnel=True) df = result.to_pandas(n_process=1) #n_process配置可参考机器配置,取值大于1时可以开启多线程加速。
其中:
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET:为您阿里云账号的AccessKey ID和 AccessKey Secret,为防止账号信息泄漏,建议您将AccessKey配置为环境变量。
获取AccessKey信息,请参见创建AccessKey。
如何设置环境变量,请参见配置环境变量。
your-default-project和your-end-point:需替换为您设置的默认项目名称与Endpoint信息,各地域的Endpoint请参见Endpoint。
关于如何使用PyODPS对MaxCompute表进行其他操作(例如写入数据),详情请参见表。
相关文档
DSW提供了SQL File功能,支持您通过SQL语句的方式对有查询权限的MaxCompute数据源进行快速的数据查询,具体操作,请参见使用SQL File查询MaxCompute表。