DataWorks のようなデータ開発プラットフォームで、PyODPS をノードとして実行できます。 これらのプラットフォームは PyODPS のランタイムとスケジューリングを管理するため、手動で MaxCompute のエントリオブジェクトを作成する必要はありません。 PyODPS DataFrame API を使用すると、pandas スタイルのデータ処理が可能になります。このトピックでは、DataWorks を使用して、プロジェクトで PyODPS を使い始める方法を説明します。
前提条件
MaxCompute が有効化されていること。
MaxCompute プロジェクトを作成してあること。
手順
PyODPS ノードの作成
このトピックでは、DataWorks の PyODPS ノードを使用します。 詳細については、「PyODPS 3 タスクの開発」をご参照ください。
このトピックでは、PyODPS 3 ノードを例として使用します。 PyODPS 3 ノードの基盤となる Python のバージョンは 3.7 です。
PyODPS ノードは、最大 50 MB のローカルデータを処理でき、実行時に最大 1 GB のメモリを使用できます。 タスクがこれらの制限を超えると、システムによって終了されます。 したがって、PyODPS タスクで大量のデータを処理する Python コードを記述することは避けてください。
DataWorks でのコードの記述とデバッグは効率が良くありません。 効率を向上させるために、IntelliJ IDEA でコードをローカルに開発することを推奨します。
ワークフローの作成
Data Studio ページに移動し、業務フロー を右クリックして、ビジネスフローの新規作成 を選択します。
PyODPS ノードの作成
新しいワークフローを右クリックし、 を選択し、ノードの名前を入力してから コミット をクリックします。
PyODPS ノードの編集
コードの記述
PyODPS ノードのエディターにテストコードを入力します。 次の例は、PyODPS API を使用したテーブル操作を示しています。 テーブル操作と SQL 操作の詳細については、「テーブル」および「SQL」をご参照ください。
from odps import ODPS # DataWorks の PyODPS ノードでは、グローバル変数 (`o` または `odps`) がデフォルトで MaxCompute のエントリとして利用できます。 手動で定義することなく直接使用できます。 table = o.create_table('my_new_table', 'num bigint, id string', if_not_exists=True) # 非パーティション化テーブル my_new_table にデータを挿入します。 records = [[111, 'aaa'], [222, 'bbb'], [333, 'ccc'], [444, '中文']] o.write_table(table, records) # 非パーティション化テーブル my_new_table からデータを読み取ります。 for record in o.read_table(table): print(record[0],record[1]) # SQL ステートメントを実行してテーブルからデータを読み取ります。 result = o.execute_sql('select * from my_new_table;',hints={'odps.sql.allow.fullscan': 'true'}) # SQL の実行結果を読み取ります。 with result.open_reader() as reader: for record in reader: print(record[0],record[1]) # テーブルをドロップしてリソースを解放します。 table.drop()コードの実行
コードを編集した後、
アイコンをクリックします。 実行が完了したら、運用ログ タブで結果を表示できます。 次のログ出力は成功を示しています。2023-07-21 15:06:41 INFO ======================================================== Executing user script with PyODPS 0.11.2.3 Tunnel session created: <TableUploadSession xxx > Tunnel session created: <TableDownloadSession xxx > 111 aaa 222 bbb 333 ccc 444 中文 Tunnel session created: <InstanceDownloadSession id=xxx project_name=xxx > 111 aaa 222 bbb 333 ccc 444 中文 2023-07-21 15:06:49 INFO ======================================================== 2023-07-21 15:06:49 INFO Exit code of the Shell command 0 2023-07-21 15:06:49 INFO --- Invocation of Shell command completed --- 2023-07-21 15:06:49 INFO Shell run successfully! 2023-07-21 15:06:49 INFO Current task status: FINISH 2023-07-21 15:06:49 INFO Cost time is: 7.507s /home/admin/alisatasknode/taskinfo/xxx xxx .log-END-EOF