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

MaxCompute:Windows開発環境のセットアップ

最終更新日:Feb 07, 2025

このトピックでは、Windowsオペレーティングシステムを実行するMaxCompute開発環境でSparkをセットアップする方法について説明します。

Linuxオペレーティングシステムがインストールされている場合は、「Linux開発環境の設定」の手順に従って、Linuxオペレーティングシステムを実行するSpark on MaxCompute開発環境を設定します。

前提条件

Spark on MaxCompute開発環境を設定する前に、Windowsオペレーティングシステムに次のソフトウェアがインストールされていることを確認してください。

説明

このトピックで使用されているソフトウェアのバージョン番号とソフトウェアのインストールパスは参考用です。 ダウンロードしてインストールする必要がある実際のソフトウェアのバージョンは、オペレーティングシステムによって異なる場合があります。

  • JDK

    この例では、JDK 1.8.0_361が使用されます。 JDKのダウンロード方法の詳細については、JDK公式Webサイトにアクセスしてください。

  • Python

    この例では、Python 3.10が使用されます。 Pythonのダウンロード方法の詳細については、Python公式Webサイトにアクセスしてください。

    説明

    この例では、Spark 2.4.5が使用されます。 別のバージョンのSparkを使用する場合は、Sparkバージョンに対応するバージョンのPythonをダウンロードしてインストールします。 詳しくは、「 https://pypi.org/project/pyspark/ 」をご参照ください。

  • Maven

    この例では、Apache Maven 3.8.7が使用されます。 Apache Mavenのダウンロード方法の詳細については、Maven公式Webサイトにアクセスしてください。

  • Git

    この例では、Git 2.39.1.windows.1が使用されます。 Gitのダウンロード方法の詳細については、Git公式Webサイトにアクセスしてください。

  • Scala

    この例では、Scala 2.13.10が使用されます。 Scalaのダウンロード方法の詳細については、Scala公式Webサイトにアクセスしてください。

Spark on MaxComputeクライアントパッケージのダウンロード

Spark on MaxComputeクライアントパッケージは、MaxCompute認証機能とともにリリースされます。 これにより、MaxComputeのSparkは、spark-submitスクリプトを使用してMaxComputeプロジェクトにジョブを送信するクライアントとして機能します。 MaxComputeは、Spark 1.x、Spark 2.x、およびSpark 3.xのリリースパッケージを提供します。 これらのパッケージは、次のリンクからダウンロードできます。 この例では、Spark 2.4.5が使用されます。

環境変数を設定します。

Windowsオペレーティングシステムで、[このPC] を右クリックし、ショートカットメニューから [プロパティ] を選択します。 表示されるページで、[システムの詳細設定] をクリックします。 [詳細設定] タブで、[環境変数] をクリックし、環境変数を設定します。 次のコンテンツでは、環境変数の設定方法について説明します。

  • Java環境変数を設定します。

    • Javaインストールパスを取得します。

    • Java環境変数を編集します。

      1. JAVA_HOME変数をシステム変数に追加し、変数値をJavaインストールパスに設定します。

      2. システム変数のPathパラメーターに % JAVA_HOME %\binを追加します。

    • Java環境変数が正常に設定されているかどうかを確認します。

      • 検証メソッド

        Win + Rを押します。 [実行] ダイアログボックスで [cmd] と入力し、[OK] をクリックします。 コマンドプロンプトで、java -versionと入力します。 返された結果が予想通りであれば、Java環境変数は正常に設定されます。

      • 期待される結果の例

        java version "1.8.0_361"
        Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
        Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
  • Spark環境変数を設定します。

    • Spark on MaxComputeパッケージの解凍先のパスを取得します。

    • Spark環境変数を編集します。

      1. SPARK_HOMEパラメーターをシステム変数に追加し、Spark on MaxComputeクライアントパッケージが解凍されるパスに変数値を設定します。

      2. システム変数のPathパラメーターに % SPARK_HOME %\binを追加します。

  • Scala環境変数を設定します。

    Scala環境変数が正常に設定されているかどうかを確認します。

    • 検証メソッド

      Win + Rを押します。 [実行] ダイアログボックスで [cmd] と入力し、[OK] をクリックします。 コマンドプロンプトで、scalaと入力します。 返された結果が期待どおりの場合、Scala環境変数は正常に設定されています。

    • 期待される結果の例

      Welcome to Scala 2.13.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_361).
      Type in expressions for evaluation. Or try :help.
      
      scala>
  • Python環境変数を設定します。

    • Pythonのインストールパスを取得します。

    • Python環境変数を編集します。

      Pythonのインストールパスと、PythonのインストールパスにあるScriptsサブディレクトリを、システム変数のpathパラメーターに追加します。

    • Python環境変数が正常に設定されているかどうかを確認します。

      • 検証メソッド

        Win + Rを押します。 [実行] ダイアログボックスで [cmd] と入力し、[OK] をクリックします。 コマンドプロンプトで、python -- versionと入力します。 返された結果が予想通りであれば、Python環境変数は正常に設定されます。

      • 期待される結果の例

        Python 3.10.6
  • Maven環境変数を設定します。

    • Mavenパッケージの解凍先のパスを取得します。

    • Maven環境変数を編集します。

      1. MAVEN_HOMEパラメーターをシステム変数に追加し、変数値をMavenパッケージの解凍先のパスに設定します。

      2. システム変数のPathパラメーターに % MAVEN_HOME %\binを追加します。

    • Maven環境変数が正常に設定されているかどうかを確認します。

      • 検証メソッド

        Win + Rを押します。 [実行] ダイアログボックスで [cmd] と入力し、[OK] をクリックします。 コマンドプロンプトで、mvn -- versionと入力します。 返された結果が期待どおりの場合、Maven環境変数は正常に設定されています。

      • 期待される結果の例

        # *** indicates the partial path to which the Maven package is decompressed. 
        Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
        Maven home: D:\***\apache-maven-3.8.7-bin\apache-maven-3.8.7
        Java version: 1.8.0_361, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_361\jre
        Default locale: zh_CN, platform encoding: GBK
        OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
  • Git環境変数を設定します。

    Git環境変数が正常に設定されているかどうかを確認します。

    • 検証メソッド

      Win + Rを押します。 [実行] ダイアログボックスで [cmd] と入力し、[OK] をクリックします。 コマンドプロンプトで、git -- versionと入力します。 返された結果が期待どおりの場合、Git環境変数は正常に設定されています。

    • 期待される結果の例

      git version 2.39.1.windows.1
  • spark_defaults.confファイルを設定します。

    MaxComputeクライアントでSparkを初めて使用する場合は、Spark on MaxComputeクライアントパッケージが存在する解凍パスのconfフォルダー内のspark-defaults.conf.templateファイルの名前をspark-defaults.confに変更します。 次に、ファイルを設定します。 spark-defaults.conf.templateファイルとspark-defaults.confファイルの両方が存在する場合は、名前を変更する必要はありません。 spark-defaults.confファイルを設定するだけで済みます。 サンプルコード:

    # Go to the path to which the Spark on MaxCompute client package is decompressed and open the conf folder. The actual path may vary. 
    
    # Open the spark-defaults.conf file.
    
    # Add the following configurations to the end of the configuration file: 
    spark.hadoop.odps.project.name = <MaxCompute_project_name>
    spark.hadoop.odps.access.id = <AccessKey_id>
    spark.hadoop.odps.access.key = <AccessKey_secret>
    spark.hadoop.odps.end.point = <Endpoint>   # The endpoint that is used to connect the Spark on MaxCompute client to your MaxCompute project. You can modify the endpoint based on your business requirements. 
    # For Spark 2.3.0, set spark.sql.catalogImplementation to odps. For Spark 2.4.5, set spark.sql.catalogImplementation to hive. 
    spark.sql.catalogImplementation={odps|hive}
    
    # Retain the following parameter configurations:
    spark.hadoop.odps.task.major.version = cupid_v2
    spark.hadoop.odps.cupid.container.image.enable = true
    spark.hadoop.odps.cupid.container.vm.engine.type = hyper
    spark.hadoop.odps.moye.trackurl.host = http://jobview.odps.aliyun.com
    • MaxCompute_project_name: アクセスするMaxComputeプロジェクトの名前。

      このパラメーターには、MaxComputeプロジェクトが対応するDataWorksワークスペースではなく、MaxComputeプロジェクトの名前を指定します。 MaxComputeコンソールにログインできます。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[ワークスペース] > [プロジェクト] を選択して、MaxComputeプロジェクトの名前を表示します。

    • AccessKey_id: MaxComputeプロジェクトへのアクセスに使用されるAccessKey ID。

      AccessKeyペアページからAccessKey IDを取得できます。

    • AccessKey_secret: AccessKey IDに対応するAccessKeyシークレット。

      AccessKeyペアページからAccessKey secretを取得できます。

    • Endpoint: MaxComputeプロジェクトが存在するリージョンのパブリックエンドポイント。

      各リージョンのパブリックエンドポイントの詳細については、「異なるリージョンのエンドポイント (インターネット) 」をご参照ください。

    • VPC_endpoint: MaxComputeプロジェクトが存在するリージョンのVPCエンドポイント。

      各リージョンのVPCエンドポイントの詳細については、「異なるリージョンのエンドポイント (VPC) 」をご参照ください。

プロジェクトの準備

MaxComputeのSparkは、デモプロジェクトテンプレートを提供します。 テンプレートをダウンロードしてコピーし、アプリケーションを開発することを推奨します。

重要

デモプロジェクトでは、Spark on MaxComputeの依存関係スコープが提供されています。 このスコープを変更しないでください。 そうしないと、送信したジョブが期待どおりに実行されない場合があります。

Windowsオペレーティングシステムでプロジェクトを準備します。

  • Spark-1.xテンプレートをダウンロードし、テンプレートをコンパイルします。

    # Start the downloaded Git client (Git Bash), go to the directory to which the project is downloaded, and then run the following code:
    git clone https://github.com/aliyun/MaxCompute-Spark.git
    
    # Go to the project folder.
    cd MaxCompute-Spark/spark-1.x
    
    # Compile the project package.
    mvn clean package
  • Spark-2.xテンプレートをダウンロードし、テンプレートをコンパイルします。

    # Start the downloaded Git client (Git Bash), go to the directory to which the project is downloaded, and then run the following code:
    git clone https://github.com/aliyun/MaxCompute-Spark.git
    
    # Go to the project folder.
    cd MaxCompute-Spark/spark-2.x
    
    # Compile the project package.
    mvn clean package
  • Spark-3.xテンプレートをダウンロードし、テンプレートをコンパイルします。

    # Start the downloaded Git client (Git Bash), go to the directory to which the project is downloaded, and then run the following code:
    git clone https://github.com/aliyun/MaxCompute-Spark.git
    
    # Go to the project folder.
    cd MaxCompute-Spark/spark-3.x
    
    # Compile the project package.
    mvn clean package

上記のコマンドを実行した後、プロジェクトの作成に失敗した場合、一部の環境設定は無効です。 上記の手順に従って、設定を確認します。 無効な設定が見つかった場合は、設定を変更します。

依存関係の設定

準備したSpark on MaxComputeプロジェクトで、依存関係を設定します。 次のコンテンツは、依存関係を設定するためにGitクライアントで実行できるサンプルコマンドを提供します。 関連ファイルを直接開いて依存関係を設定することもできます。

  • MaxComputeプロジェクトのテーブルにアクセスするために必要な依存関係を設定します。

    • Spark-1.xテンプレートが使用されます。

      # Go to the spark-1.x folder. 
      cd MaxCompute-Spark/spark-1.x
      
      # Edit the POM file to add the odps-spark-datasource dependency. 
      <dependency>
        <groupId>com.aliyun.odps</groupId>
        <artifactId>odps-spark-datasource_2.10</artifactId>
        <version>3.3.8-public</version>
      </dependency>                           
    • Spark-2.xテンプレートが使用されます。

      # Go to the spark-2.x folder. 
      cd MaxCompute-Spark/spark-2.x
      
      # Edit the POM file to add the odps-spark-datasource dependency. 
      <dependency>
          <groupId>com.aliyun.odps</groupId>
          <artifactId>odps-spark-datasource_2.11</artifactId>
          <version>3.3.8-public</version>
      </dependency>
  • Object Storage Service (OSS) へのアクセスに必要な依存関係を設定します。

    ジョブがOSSにアクセスする必要がある場合は、次の依存関係を追加します。

    <dependency>
        <groupId>com.aliyun.odps</groupId>
        <artifactId>hadoop-fs-oss</artifactId>
        <version>3.3.8-public</version>
    </dependency>

Spark-1.x、Spark-2.x、またはSpark-3.xテンプレートを使用する場合に必要な依存関係の詳細については、「Spark-1.x pom」、「Spark-2.x pom」、または「Spark-3.x pom」をご参照ください。

煙のテスト

上記の操作が完了したら、スモークテストを実行して、MaxComputeでSparkのエンドツーエンドの接続を確認します。

SparkPiの煙のテスト

たとえば、次のコマンドを実行して、Spark 2.xアプリケーションのSparkPiスモークテストを実行できます。

# Press Win+R. In the Run dialog box, enter cmd. 
# Go to the bin folder in the D:\PC\spark\spark-2.4.5-odps0.33.2\ directory where the job is saved. 
cd D:\PC\spark\spark-2.4.5-odps0.33.2\bin

# Run the following commands: 
spark-submit \
--class com.aliyun.odps.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
/path/to/your/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

# If the following log information is displayed, smoke testing is successful. 
19/06/11 11:57:30 INFO Client:
         client token: N/A
         diagnostics: N/A
         ApplicationMaster host: 11.222.166.90
         ApplicationMaster RPC port: 38965
         queue: queue
         start time: 1560225401092
         final status: SUCCEEDED

ローカルモードでのIntelliJ IDEAスモークテスト

  1. ダウンロードしたプロジェクトをIntelliJ IDEAで開き、MaxComputeのSparkの -- Jarsパラメーターで指定されたディレクトリをIntelliJ IDEAのプロジェクトテンプレートに追加します。 詳細については、「IntelliJ IDEAを使用したローカルモードでのMaxComputeでのSparkの実行に関する注意事項」をご参照ください。

  2. デバッグ用にローカルモードのIntelliJ IDEAに次のコードを追加します。

    val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .config("spark.master", "local[4]") // The code can run after you set spark.master to local[N]. N indicates the number of concurrent Spark jobs. 
          .getOrCreate()
  3. IntelliJ IDEAでローカルモードでコードを実行する場合は、main/resourceディレクトリのodps.confファイルで関連する設定を指定する必要があります。 spark-defaults.confファイルの設定を直接参照することはできません。 次のコードは例を提供します。

    説明

    Spark 2.4.5以降のodps.confファイルで設定項目を指定する必要があります。

    dops.access.id=""
    odps.access.key=""
    odps.end.point=""
    odps.project.name=""

Spark 2.4.5の使用に関する注意事項

  • Spark 2.4.5を使用してジョブを送信する

    Yarnクラスターでジョブを送信します。 詳細は、「クラスターモード」をご参照ください。

  • Spark 2.4.5の使用の変更点

    • Yarnクラスターでジョブを送信する場合は、HADOOP_CONF_DIR=$SPARK_HOME/confを指定してSPARK_HOME環境変数を追加する必要があります。

    • ローカルモードでデバッグを実行する場合は、$SPARK_HOME/confパスにodps.confという名前のファイルを作成し、次の設定をファイルに追加する必要があります。

      odps.project.name = 
      odps.access.id = 
      odps.access.key =
      odps.end.point =
  • Spark 2.4.5のパラメーター設定の変更

    • spark.sql.ca talogImplementation: このパラメーターはhiveに設定されます。

    • spark.sql.sources.de fault: このパラメーターはhiveに設定されています。

    • spark.sql.odps.columnarReaderBatchSize: ベクトル化されたリーダーが一度にデータを読み取る行数を指定します。 デフォルト値: 4096

    • spark.sql.odps.enableVectorizedReader: ベクトル化されたリーダーを有効にするかどうかを指定します。 デフォルト値は True です。

    • spark.sql.odps.enableVectorizedWriter: ベクトル化されたライターを有効にするかどうかを指定します。 デフォルト値は True です。

    • spark.sql.odps.split.size: このパラメーターは、MaxComputeテーブルに対するデータ読み取り操作の同時実行性を調整するために使用できます。 デフォルトでは、このパラメーターはパーティションごとに256に設定されています。 単位:MB。

Spark 3.1.1の使用に関する注意事項

  • Spark 3.1.1を使用してジョブを送信する

    Yarnクラスターでジョブを送信します。 詳細は、「クラスターモード」をご参照ください。

  • Spark 3.1.1の使用の変更点

    • Yarnクラスターでジョブを送信する場合は、HADOOP_CONF_DIR=$SPARK_HOME/confを指定してSPARK_HOME環境変数を追加する必要があります。

    • YarnクラスターでPySparkジョブを送信する場合、Spark for Python 3を使用するには、spark-defaults.confファイルに次の設定を追加する必要があります。

      spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz
      spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3
    • ローカルモードでデバッグを実行する場合:

      • $SPARK_HOME/confディレクトリにodps.confファイルを作成し、次の設定をファイルに追加する必要があります。

        odps.project.name = 
        odps.access.id = 
        odps.access.key =
        odps.end.point =
      • spark.hadoop.fs.de faultFS = file:/// を追加する必要があります。 サンプルコード:

        val spark = SparkSession
          .builder()
          .config("spark.hadoop.fs.defaultFS", "file:///")
          .enableHiveSupport()
          .getOrCreate()
  • Spark 3.1.1のパラメーター設定の変更

    • spark.sql.de faultCatalog: このパラメーターはodpsに設定されます。

    • spark.sql.ca talog.odps: このパラメーターは、org.apache.spark.sql.exe cution.datasources.v2.odps.OdpsTableCatalogに設定されます。

    • spark.sql.sources.partitionOverwriteMode: このパラメーターはdynamicに設定されます。

    • spark.sql.extensions: このパラメーターは、org.apache.spark.sql.exe cution.datasources.v2.odps.extension.OdpsExtensionsに設定されます。

    • spark.sql.odps.enableVectorizedReader: ベクトル化されたリーダーを有効にするかどうかを指定します。 デフォルト値は True です。

    • spark.sql.odps.enableVectorizedWriter: ベクトル化されたライターを有効にするかどうかを指定します。 デフォルト値は True です。

    • spark.sql.ca talog.odps.splitSizeInMB: このパラメーターは、MaxComputeテーブルに対するデータ読み取り操作の同時実行性を調整するために使用できます。 デフォルトでは、このパラメーターはパーティションごとに256に設定されています。 単位:MB。