在DSW实例中,您可以通过SQL File方便地查询MaxCompute表数据,以及可视化展示查询结果,也可以使用PyODPS实现对MaxCompute表更多丰富的操作。本文介绍如何使用PyODPS和SQL File读MaxCompute表数据。
前提条件
在开始执行操作前,请确认您已经完成以下准备工作:
已开通MaxCompute,详情请参见开通MaxCompute和DataWorks。
可选:已创建支持登录PAI控制台的RAM角色,详情请参见RAM角色登录并使用PAI。
可选:已为RAM角色授权MaxCompute项目操作权限,详情请参见通过控制台(新版)管理用户权限。
安装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 ID和 AccessKey Secret字符串。
your-default-project和your-end-point:需替换为您设置的默认项目名称与Endpoint信息,各地域的Endpoint请参见Endpoint。
关于如何使用PyODPS对MaxCompute表进行其他操作(例如写入数据),详情请参见表。
相关文档
DSW提供了SQL File功能,支持您通过SQL语句的方式对有查询权限的MaxCompute数据源进行快速的数据查询,具体操作,请参见使用SQL File查询MaxCompute表。