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

DataWorks:MaxCompute Spark ノード

最終更新日:Feb 06, 2026

Spark on MaxCompute ジョブは、ローカルモードまたはクラスターモードで実行できます。DataWorks は、クラスターモードで Spark on MaxCompute バッチジョブを実行し、他のノードタイプとの統合とスケジュールを可能にします。このトピックでは、DataWorks で Spark on MaxCompute ジョブを設定およびスケジュールする方法について説明します。

概要

Spark on MaxCompute は、オープンソースの Spark と互換性のある MaxCompute コンピューティングサービスです。コンピューティングリソースとデータ権限の統一されたシステム上に構築された Spark コンピューティングフレームワークを提供し、使い慣れた開発パターンを使用して Spark ジョブを送信および実行し、多様なデータ処理および分析のニーズに対応できます。DataWorks では、MaxCompute Spark ノードを使用して Spark on MaxCompute タスクをスケジュールおよび実行し、他のジョブと統合できます。

Spark on MaxCompute は、Java、Scala、Python での開発をサポートしており、ローカルモードまたはクラスターモードでタスクを実行できます。DataWorks で Spark on MaxCompute バッチジョブを実行する場合、DataWorks はそれらをクラスターモードで実行します。Spark on MaxCompute の実行モードの詳細については、「実行モード」をご参照ください。

権限

(オプション、RAM ユーザー向け) タスクを開発する RAM ユーザーは、[開発者] または [ワークスペース管理者] のロールを持つワークスペースのメンバーである必要があります。[ワークスペース管理者] ロールは広範な権限を持つため、慎重に割り当ててください。メンバーの追加方法の詳細については、「ワークスペースへのメンバーの追加とロールの割り当て」をご参照ください。

説明

Alibaba Cloud アカウント (root ユーザー) を使用している場合は、このステップをスキップできます。

制限事項

MaxCompute Spark ノードで Spark 3.x を選択し、ジョブの送信に失敗した場合は、サーバーレスリソースグループを購入して使用する必要があります。詳細については、「サーバーレスリソースグループの購入と使用」をご参照ください。

前提条件

MaxCompute Spark ノードは、Java/Scala および Python で記述された Spark on MaxCompute バッチジョブの実行をサポートしています。開発手順と設定インターフェイスは言語ごとに異なります。ビジネスニーズに最も適した言語を選択してください。

Java/Scala

MaxCompute Spark ノードで Java または Scala コードを実行する前に、ローカルで Spark on MaxCompute ジョブコードを開発し、MaxCompute リソースとして DataWorks にアップロードする必要があります。次の手順に従ってください:

  1. 開発環境の準備

    ご利用のオペレーティングシステムに基づいて、Spark on MaxCompute タスクを実行するための開発環境を準備します。詳細については、「Java 開発環境の準備」および「Scala 開発環境の準備」をご参照ください。

  2. Java/Scala コードの開発

    MaxCompute Spark ノードで Java または Scala コードを実行する前に、ローカルまたは既存の環境で Spark on MaxCompute コードを開発します。開発には、Spark on MaxCompute が提供するサンプルプロジェクトテンプレートの使用を推奨します。

  3. コードのパッケージ化と DataWorks へのアップロード

    コードを開発した後、パッケージ化して MaxCompute リソースとして DataWorks にアップロードします。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

Python (デフォルト)

DataWorks では、Python リソースに直接コードを記述して PySpark ジョブを開発し、MaxCompute Spark ノードを使用してジョブを送信できます。DataWorks で Python リソースを作成する方法と PySpark の開発例については、「PySpark 開発例」をご参照ください。

説明

この方法では、DataWorks が提供するデフォルトの Python 環境を使用しますが、プリインストールされているサードパーティパッケージの数は限られています。デフォルトの環境が PySpark ジョブの依存関係の要件を満たさない場合は、「Python (カスタム Python 環境の使用)」セクションで説明されているように、カスタム Python 環境を準備できます。または、Python リソースのサポートがより優れている PyODPS 2 または PyODPS 3 ノードを使用することもできます。

Python (カスタム)

プラットフォームが提供するデフォルトの Python 環境がビジネスニーズを満たさない場合は、次の手順に従ってカスタム Python 環境を使用して Spark on MaxCompute タスクを実行します。

  1. ローカルで Python 環境を準備する

    ビジネスニーズに基づいて Python 環境を設定できます。詳細については、「PySpark でサポートされる Python のバージョンと依存関係」をご参照ください。

  2. 環境のパッケージ化と DataWorks へのアップロード

    Python 環境を ZIP パッケージに圧縮し、MaxCompute リソースとして DataWorks にアップロードします。このリソースは、Spark on MaxCompute タスクの実行環境として機能します。

設定プロパティ

DataWorks は、クラスターモードで Spark on MaxCompute バッチジョブを実行します。このモードでは、プログラムのエントリーポイントである main クラスを指定する必要があります。main メソッドが Success または Fail のステータスで終了すると、Spark ジョブは終了します。さらに、spark-defaults.conf ファイルの各設定を MaxCompute Spark ノードの設定プロパティに追加する必要があります。例としては、executor インスタンスの数、メモリサイズ、spark.hadoop.odps.runtime.end.point プロパティなどがあります。

説明

spark-defaults.conf ファイルをアップロードする必要はありません。代わりに、spark-defaults.conf ファイルの各設定を MaxCompute Spark ノードの設定プロパティに追加してください。

Java/Scala ジョブ

image

パラメーター

説明

Spark-submit コマンド

Spark バージョン

サポートされているバージョンには、Spark 1.xSpark 2.xSpark 3.x があります。

説明

MaxCompute Spark ノードで Spark 3.x を選択し、ジョブの送信に失敗した場合は、サーバーレスリソースグループを購入して使用する必要があります。詳細については、「サーバーレスリソースグループの購入と使用」をご参照ください。

言語

Java/Scala または Python を選択します。Spark on MaxCompute の開発に使用した言語を選択してください。

メイン JAR

タスクのメイン JAR リソースファイルを指定します。

リソースファイルを DataWorks にアップロードして送信する必要があります。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

app jar or Python file

設定プロパティ

ジョブを送信するための設定プロパティを指定します。次の点にご注意ください:

  • spark.hadoop.odps.access.idspark.hadoop.odps.access.key、または spark.hadoop.odps.end.point を設定する必要はありません。これらはデフォルトで MaxCompute プロジェクトの値になります。必要に応じて、明示的に設定してデフォルト値をオーバーライドできます。

  • spark-defaults.conf ファイルをアップロードする必要はありません。代わりに、spark-defaults.conf の各設定を MaxCompute Spark ノードの設定プロパティに追加する必要があります。例としては、エグゼキュータの数、メモリサイズ、spark.hadoop.odps.runtime.end.point プロパティなどがあります。

--conf PROP=VALUE

Main class

メインクラスの名前を指定します。このパラメーターは Java/Scala で必須です。

--class CLASS_NAME

引数

必要に応じて、スペースで区切って引数を追加できます。DataWorks はスケジュールパラメーターをサポートしています。引数${variable_name} のフォーマットで設定できます。設定後、右側のナビゲーションウィンドウの [スケジュール] タブの [スケジュールパラメーター] フィールドで変数に値を割り当てる必要があります。

スケジュールパラメーターでサポートされている値のフォーマットについては、「スケジュールパラメーターの設定」をご参照ください。

[app arguments]

JAR リソース

このパラメーターは Java/Scala にのみ適用されます。

リソースファイルを DataWorks にアップロードして送信する必要があります。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

リソースコマンド:

--jars JARS

ファイルリソース

ファイルリソースを指定します。

--files FILES

アーカイブリソース

アーカイブリソースを指定します。ZIP フォーマットのリソースのみ選択できます。

--archives ARCHIVES

Python ジョブ

image

パラメーター

説明

Spark-submit コマンド

Spark バージョン

サポートされているバージョンには、Spark 1.xSpark 2.xSpark 3.x があります。

説明

MaxCompute Spark ノードで Spark 3.x を選択し、ジョブの送信に失敗した場合は、サーバーレスリソースグループを購入して使用する必要があります。詳細については、「サーバーレスリソースグループの購入と使用」をご参照ください。

言語

Python を選択します。Spark on MaxCompute の開発に使用した言語を選択してください。

メイン Python リソース

タスクのメイン Python リソースファイルを指定します。

リソースファイルを DataWorks にアップロードして送信する必要があります。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

app jar or Python file

設定プロパティ

ジョブを送信するための設定プロパティを指定します。次の点にご注意ください:

  • spark.hadoop.odps.access.idspark.hadoop.odps.access.key、または spark.hadoop.odps.end.point を設定する必要はありません。これらはデフォルトで MaxCompute プロジェクトの値になります。必要に応じて、明示的に設定してデフォルト値をオーバーライドできます。

  • spark-defaults.conf ファイルをアップロードする必要はありません。代わりに、spark-defaults.conf の各設定を MaxCompute Spark ノードの設定プロパティに追加する必要があります。例としては、エグゼキュータの数、メモリサイズ、spark.hadoop.odps.runtime.end.point プロパティなどがあります。

--conf PROP=VALUE

引数

必要に応じて、スペースで区切って引数を追加できます。DataWorks はスケジュールパラメーターをサポートしています。引数${variable_name} のフォーマットで設定できます。設定後、右側のナビゲーションウィンドウの [スケジュール] タブの [スケジュールパラメーター] フィールドで変数に値を割り当てる必要があります。

スケジュールパラメーターでサポートされている値のフォーマットについては、「スケジュールパラメーターの設定」をご参照ください。

[app arguments]

Python リソース

このパラメーターは Python にのみ適用されます。

リソースファイルを DataWorks にアップロードして送信する必要があります。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

--py-files PY_FILES

ファイルリソース

ファイルリソースを指定します。

--files FILES

アーカイブリソース

アーカイブリソースを指定します。ZIP フォーマットのリソースのみ選択できます。

--archives ARCHIVES

操作手順

  1. リソースの作成

    1. [データ開発] ページで、左側のナビゲーションウィンドウで [リソース管理] を見つけます。[作成] をクリックし、[MaxCompute Spark Python] を選択してリソースを作成します。リソースに spark_is_number.py という名前を付けます。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。例:

      # -*- coding: utf-8 -*-
      import sys
      from pyspark.sql import SparkSession
      
      try:
          # Python 2 の場合
          reload(sys)
          sys.setdefaultencoding('utf8')
      except:
          # Python 3 では不要
          pass
      
      if __name__ == '__main__':
          spark = SparkSession.builder\
              .appName("spark sql")\
              .config("spark.sql.broadcastTimeout", 20 * 60)\
              .config("spark.sql.crossJoin.enabled", True)\
              .config("odps.exec.dynamic.partition.mode", "nonstrict")\
              .config("spark.sql.catalogImplementation", "odps")\
              .getOrCreate()
      
      def is_number(s):
          try:
              float(s)
              return True
          except ValueError:
              pass
      
          try:
              import unicodedata
              unicodedata.numeric(s)
              return True
          except (TypeError, ValueError):
              pass
      
          return False
      
      print(is_number('foo'))
      print(is_number('1'))
      print(is_number('1.3'))
      print(is_number('-1.37'))
      print(is_number('1e3'))
    2. リソースを保存します。

  2. 作成した MaxCompute Spark ノードで、ノードとスケジュールパラメーターを設定します。詳細については、「MaxCompute Spark ノードの設定」をご参照ください。

  3. ノードを定期的に実行する必要がある場合は、ビジネス要件に基づいてスケジュールプロパティを設定します。詳細については、「スケジュールプロパティの設定」をご参照ください。

  4. ノードを設定した後、デプロイします。詳細については、「タスクのデプロイ」をご参照ください。

  5. タスクをデプロイした後、運用保守センターで定期タスクの実行ステータスを表示できます。詳細については、「自動トリガータスクの表示と管理」をご参照ください。

    説明
    • MaxCompute Spark ノードは、データ開発ページのエディターから直接実行することはできません。運用保守センターからタスクを実行する必要があります。

    • 補足インスタンスが正常に実行された後、実行ログからトラッキング URL を開くことで結果を表示できます。

関連トピック