Data Science Workshop (DSW) インスタンスでは、PyODPS を使用して MaxCompute からデータを読み取ることができます。
事前準備
開始する前に、次の準備を完了してください。
MaxCompute が有効化されていること。 詳細については、「MaxCompute の有効化」をご参照ください。
ご利用のアカウントに、MaxCompute プロジェクトを操作するために必要な権限が付与されていること。 ルートアカウントを使用して DSW インスタンスにログインする場合、権限付与は不要です。 Resource Access Management (RAM) ユーザーを使用する場合は、次のように RAM ユーザーに権限を付与します。
Python 3.6 以降がインストールされていることを確認してください。
操作手順
PyODPS を使用して、MaxCompute または Designer のデータを操作できます。 詳細については、「PyODPS 開発ドキュメント」をご参照ください。
PyODPS のインストール
DSW ターミナルで、次のコマンドを実行します。
pip install pyodps次のコマンドを実行して、インストールを検証します。 値やエラーメッセージが返されなければ、インストールは成功です。
# Windows の場合は、python -c "from odps import ODPS" を使用します python3 -c "from odps import ODPS"システムのデフォルトではない 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:ご利用の Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。 セキュリティリスクを防ぐため、AccessKey ID と AccessKey Secret を環境変数として設定してください。
AccessKey の取得方法の詳細については、「AccessKey の作成」をご参照ください。
環境変数の設定方法の詳細については、「環境変数の設定」をご参照ください。
your-default-project および your-end-point:実際のデフォルトプロジェクト名とエンドポイントに置き換えてください。 各リージョンのエンドポイントの詳細については、「エンドポイント」をご参照ください。
PyODPS を使用してデータの書き込みなど、MaxCompute テーブルで他の操作を実行する方法の詳細については、「テーブル」をご参照ください。
関連ドキュメント
DSW は SQL File 機能を提供しており、この機能を使用すると、クエリ権限を持つ MaxCompute データソースから SQL 文を使用してデータを迅速にクエリできます。 詳細については、「SQL File を使用した MaxCompute テーブルのクエリ」をご参照ください。