すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:DataWorks ノートブックのユーザーガイド

最終更新日:Mar 14, 2026

本トピックでは、DataWorks ノートブックにおける PySpark の構成方法について説明します。カスタム構成、OSS ストレージへのアクセス、サードパーティ製 Python パッケージ、JAR リソース、および Livy パラメーターについて取り扱います。

カスタム構成の使用

重要

%%maxcompute_spark を実行した際に「dataworks-magic のバージョンをアップグレードする必要があります」というメッセージが表示された場合は、まずバージョンをアップグレードしてください。アップグレードを行わないと、以降に説明する機能が正しく動作しない場合があります。

  1. 起動時に SparkConf を設定します。たとえば、Livy の最大アイドル時間(config には Livy 関連パラメーターが含まれます)やスキーマレベルの SQL 構文の有効化(spark_conf には Spark 関連パラメーターが含まれます)を設定できます。その他のパラメーターについても同様のパターンで適用します。

    %%maxcompute_spark
    {
      "config": {
        # CPU およびメモリはデフォルトで 1 vCPU、4 GiB
        "cpu": 1,
        "memory": "4096M",
        "livy.server.max.idle.time": "10m"
      },
      "quota": "XXX",
      "spark_conf": {
        "spark.sql.catalog.odps.enableNamespaceSchema": "true"
      }
    }
  2. 構成を変更する場合は、コードを再度実行します。Spark セッションを再起動すると、以前のセッション状態はクリアされます。

OSS ストレージの使用

OSS アクセスパラメーターを構成します:

重要
  • oss_endpoint には内部エンドポイント(例:oss-cn-shanghai-internal.aliyuncs.com)を使用します。

  • ノートブック内で spark.hadoop.fs.oss.impl または spark.hadoop.fs.AbstractFileSystem.oss.impl を設定しないでください。設定すると OSS へのアクセスが妨げられる場合があります。

%%maxcompute_spark
{
  "spark_conf": {
    "spark.hadoop.odps.cupid.trusted.services.access.list": "<bucket-name>.<oss-endpoint>",
    "spark.hadoop.fs.oss.accessKeyId": "***",
    "spark.hadoop.fs.oss.accessKeySecret": "***",
    "spark.hadoop.fs.oss.endpoint": "<oss-endpoint>"
  }
}

サードパーティ製 Python パッケージの使用

  1. 依存関係のパッケージ化:pyodps-pack を使用します。Python 3.11 を指定してください。Livy Spark セッションはデフォルトで Python 3.11 を使用します。バージョンを一致させることで、互換性の問題を回避できます。詳細については、「PySpark の Python バージョンと依存関係」をご参照ください。

    # pyodps のインストール
    pip install pyodps
    
    # requirements.txt を準備し、パッケージ化
    pyodps-pack -r requirements.txt --python-version=3.11 -o <package-name>
  2. パッケージを MaxCompute プロジェクトにアップロード

    -- odpscmd で実行
    ADD archive /path/to/<package-name> -f;
  3. Spark でパッケージを使用するよう構成

    説明
    • cupid.resources の値を複数指定する場合は、カンマ(,)で区切ります。詳細については、「データ相互運用性の構成」をご参照ください。

    • PYTHONPATH のエントリを複数指定する場合は、コロン(:)で区切ります。本例では、PYTHONPATHpackages サブディレクトリが含まれています。これは pyodps-pack が自動的に追加するためです。別のパッケージ化手法を使用する場合は、PYTHONPATH を設定する前に、ディレクトリ構造を確認してください。PYTHONPATH の詳細については、「ユーザー定義 Python パッケージの参照」をご参照ください。

    %%maxcompute_spark
    {
      "spark_conf": {
        "spark.hadoop.odps.cupid.resources": "<your_project>.<package-name>",
        "spark.executorEnv.PYTHONPATH": "./<your_project>.<package-name>/packages",
        "spark.yarn.appMasterEnv.PYTHONPATH": "./<your_project>.<package-name>/packages"
      }
    }

JAR またはその他のリソースパッケージの使用

  1. tar.gz ファイルなどのリソースをアップロードします:add archive /path/to/<package-name> -f;

  2. Spark がリソースを読み込むよう構成します。複数のリソースを指定する場合は、カンマ(,)で区切ります:

    %%maxcompute_spark
    {
      "spark_conf": {
        "spark.hadoop.odps.cupid.resources": "<your_project>.<package-name>"
      }
    }

spark_conf パラメーターに両方の設定を追加することで、Python パッケージ構成と組み合わせて使用できます。

高度な構成

Spark バージョンの指定

  • サポートされているバージョン:

    • spark-3.1.1-odps0.47.0

    • spark-3.4.2-odps0.48.0(デフォルト)

    • spark-3.5.2-odps0.49.0

  • 構成方法:

    %%maxcompute_spark
    {
      "spark_conf": {
        "spark.hadoop.odps.spark.version": "spark-3.4.2-odps0.48.0"
      }
    }

デフォルトの Python 3.11 環境の無効化

カスタム Python 環境を使用する場合:

%%maxcompute_spark
{
  "spark_conf": {
    "spark.hadoop.odps.spark.alinux3.enabled": "false"
  }
}

Matplotlib を使用したプロット

まず Matplotlib をパッケージ化してアップロードします。「サードパーティ製 Python パッケージの使用」をご参照ください。その後、ノートブック内でプロットを実行します:

%%spark

import matplotlib.pyplot as plt
import io, base64, json
import matplotlib
# オプション
matplotlib.use('Agg')

# 最初に figure を作成(必須ステップ)
fig = plt.figure()

# 例としてのプロット
x = [1, 2, 3, 4]
y = [20, 22, 19, 23]

plt.plot(x, y, marker='o', linestyle='--', color='b')
plt.title("時間経過に伴う温度変化")
plt.xlabel("時間")
plt.ylabel("温度")

# ノートブック内にプロットをレンダリング(Livy マジックコマンド)
%matplot plt

Livy 構成

以下の表に、構成可能な Livy パラメーターの一覧を示します。

パラメーター名

デフォルト値

説明

livy.server.access-control.enabled

true

アクセスの制御を有効化します。デフォルトで有効化されています。無効化しないでください。

livy.server.max.alive.time

3d

Livy サーバーの最大存続期間です。デフォルトは 3 日間です。単位は s(秒)、m(分)、h(時)、d(日)です。

livy.server.max.idle.time

1h

Livy サーバーの最大アイドル時間です。デフォルトは 1 時間です。この時間内に Spark セッションが実行されない場合、サーバーは停止します。

livy.server.session.timeout

12h

Spark セッションの最大アイドル時間です。デフォルトは 12 時間です。この時間内に Spark タスクが実行されない場合、セッションは停止します。

livy.server.session.state-retain.sec

12h

期限切れの Spark セッションの最大保持時間です。デフォルトは 12 時間です。この時間内にセッションを再開しなかった場合、セッションは完全に削除されます。

livy.server.session.max-creation

50

Livy サーバーあたりの同時セッション数の上限です。デフォルトは 50 です。