PyODPS快速起步¶
PyODPS是MaxCompute的Python版本的SDK:
简单方便的Python编程接口:
编写MaxCompute作业
查询MaxCompute表和视图
管理MaxCompute资源
PyODPS支持在本地环境、DataWorks、PAI Notebooks中使用:
安装PyODPS¶
使用 pip (Python包管理器) 安装
PyODPS
:
pip install pyodps
安装以后通过以下命令检查验证是否安装成功,没有报错信息则表示成功:
python -c "from odps import ODPS"
简单查询¶
官方文档提供了一个简单的查询案例,我简单复述如下:
import os
from odps import ODPS
def main():
# 确保 ALIBABA_CLOUD_ACCESS_KEY_ID 环境变量设置为用户 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 环境变量设置为用户 Access Key Secret,
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
#os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
#os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
project='project', # 项目名
endpoint='http://service.cn-hangzhou-xxx:80/api' # 官方接口
)
result = o.execute_sql('SELECT * FROM my_table LIMIT 3')
with result.open_reader() as reader:
for record in reader:
print(record)
if __name__ == "__main__":
main()
这里我运行案例遇到一个报错:
...
TypeError: `access_id` and `secret_access_key` should be provided.
这个报错有点迷惑,但是实际上通过一条条命令排查,会发现实际上 Python os.environ 对象 和 os.getenv() 方法 返回的指定环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID
和 ALIBABA_CLOUD_ACCESS_KEY_SECRET
是空的( Non
)
原因说来很简单,原来在 bash
的 ~/.bash_profile
中缺少 export
命令来明确输出环境变量就会导致 Python 的 Python os.environ 对象 和 os.getenv() 方法 无法获得该环境变量,所以一定要规范配置环境变量:
ALIBABA_CLOUD_ACCESS_KEY_ID="my_id"
ALIBABA_CLOUD_ACCESS_KEY_SECRET="my_secret"
# 必须明确 export 环境变量,否则Python os模块的 getenv() 或 environ 无法获得
export ALIBABA_CLOUD_ACCESS_KEY_ID ALIBABA_CLOUD_ACCESS_KEY_SECRET