如何使用PyODPS读写MaxCompute表数据

DSW实例中,当您想要读取MaxCompute表的数据时,可以使用PyODPS来实现。本文介绍如何使用PyODPS读取MaxCompute表数据。

前提条件

在开始执行操作前,请确认您已经完成以下准备工作:

  • 已开通MaxCompute,详情请参见开通MaxComputeDataWorks

  • 用户账号已有MaxCompute项目操作权限。如果您使用主账号登录DSW实例,则无需授权。如果您使用的为RAM账号,可以参考如下授权步骤。

    操作步骤

    1. 使用主账号登录MaxCompute控制台,在左上角选择地域。

    2. 在左侧导航栏选择工作区 > 项目管理

    3. 项目管理页面,单击目标项目操作列的管理

    4. 角色权限页签,找到role_project_dev,单击成员管理,添加对应RAM账号。

    更多MaxCompute权限管理,可参见通过控制台管理用户权限

  • 安装PyODPS环境前,您可先查看下Python的版本,建议Python版本为3.6及以上版本,不建议使用2.7及以下版本。

操作步骤

您可以使用PyODPSMaxComputeDesigner中的数据进行通信。PyODPS是阿里云提供的Python SDK,详情请参见PyODPS开发文档

  1. 安装PyODPS。

    DSWTerminal中,执行如下命令。

    pip install pyodps
  2. 执行如下命令检查安装是否成功。若无返回值和报错信息表示安装成功。

    python -c "from odps import ODPS"
  3. 如果您使用的Python不是系统默认的Python版本,安装完PIP后,您可以执行如下命令进行Python版本切换。

    /home/tops/bin/python3.7 -m pip install setuptools>=3.0
    #/home/tops/bin/python3.7为安装的python路径
  4. 通过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_IDALIBABA_CLOUD_ACCESS_KEY_SECRET:为您阿里云账号的AccessKey ID和 AccessKey Secret,为防止账号信息泄漏,建议您将AccessKey配置为环境变量。

    • your-default-projectyour-end-point:需替换为您设置的默认项目名称与Endpoint信息,各地域的Endpoint请参见Endpoint

    关于如何使用PyODPSMaxCompute表进行其他操作(例如写入数据),详情请参见

相关文档

DSW提供了SQL File功能,支持您通过SQL语句的方式对有查询权限的MaxCompute数据源进行快速的数据查询,具体操作,请参见使用SQL File查询MaxCompute