DSW インスタンスで PyODPS を使用して、SQL で MaxCompute テーブルのデータを読み書きできます。
前提条件
開始する前に、次の要件が満たされていることを確認してください。
-
MaxCompute がアクティベートされていること。 詳細については、「MaxCompute のアクティベート」をご参照ください。
-
アカウントに MaxCompute プロジェクトに必要な権限が付与されていること。 Alibaba Cloud アカウントに追加の承認は必要ありません。 RAM ユーザーの場合は、次の手順に従って権限を付与してください。
-
Python 3.6 以降がインストールされていること。
操作手順
PyODPS を使用して、MaxCompute または Machine Learning Designer のデータを操作します。 詳細については、「PyODPS ドキュメント」をご参照ください。
-
PyODPS のインストール
DSW ターミナルで、次のコマンドを実行します。
pip install pyodps -
次のコマンドを実行して、インストールを検証します。 出力やエラーが返されなければ、インストールは成功です。
# Windows の場合は、python -c "from odps import ODPS" を使用します python3 -c "from odps import ODPS" -
デフォルト以外の Python バージョンにパッケージをインストールするには、対象の Python 環境で次のコマンドを実行します。
/home/tops/bin/python3.7 -m pip install "setuptools>=3.0" # 例:/home/tops/bin/python3.7 はインストールパスです。 -
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', ) # MaxCompute からデータを読み取ります。 sql = ''' SELECT * FROM your-default-project.<table> LIMIT 100 ; ''' query_job = o.execute_sql(sql) result = query_job.open_reader(tunnel=True) # n_process > 1 に設定すると、マルチスレッドが有効になり、データ読み取りが高速化されます。 df = result.to_pandas(n_process=1)設定パラメーター:
-
ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET:Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret です。 認証情報の漏洩を防ぐために、これらを環境変数として設定してください。
-
AccessKey ペアを取得してください。 「AccessKey の作成」をご参照ください。
-
環境変数を設定してください。 「環境変数の設定」をご参照ください。
-
your-default-project および your-end-point:ご自身のデフォルトのプロジェクト名とエンドポイントに置き換えてください。 リージョンのエンドポイントについては、「エンドポイント」をご参照ください。
-
データを書き込むなど、MaxCompute テーブルに対する他の PyODPS 操作については、「テーブル」をご参照ください。
-