このトピックでは、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が使用されます。
Spark 1.6.3: Spark 1.xアプリケーションの開発に使用されます。
Spark 2.3.0: Spark 2.xアプリケーションの開発に使用されます。
Spark 2.4.5: Spark 2.xアプリケーションの開発に使用されます。 Spark 2.4.5の使用に関する注意事項の詳細については、「Spark 2.4.5の使用に関する注意事項」をご参照ください。
Spark 3.1.1: Spark 3.xアプリケーションの開発に使用されます。 Spark 3.1.1の使用に関する注意事項の詳細については、「Spark 3.1.1の使用に関する注意事項」をご参照ください。
環境変数を設定します。
Windowsオペレーティングシステムで、[このPC] を右クリックし、ショートカットメニューから [プロパティ] を選択します。 表示されるページで、[システムの詳細設定] をクリックします。 [詳細設定] タブで、[環境変数] をクリックし、環境変数を設定します。 次のコンテンツでは、環境変数の設定方法について説明します。
Java環境変数を設定します。
Javaインストールパスを取得します。
Java環境変数を編集します。
JAVA_HOME変数をシステム変数に追加し、変数値をJavaインストールパスに設定します。システム変数の
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環境変数を編集します。
SPARK_HOMEパラメーターをシステム変数に追加し、Spark on MaxComputeクライアントパッケージが解凍されるパスに変数値を設定します。システム変数の
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環境変数を編集します。
MAVEN_HOMEパラメーターをシステム変数に追加し、変数値をMavenパッケージの解凍先のパスに設定します。システム変数の
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.comMaxCompute_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 packageSpark-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 packageSpark-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スモークテスト
ダウンロードしたプロジェクトをIntelliJ IDEAで開き、MaxComputeのSparkの
-- Jarsパラメーターで指定されたディレクトリをIntelliJ IDEAのプロジェクトテンプレートに追加します。 詳細については、「IntelliJ IDEAを使用したローカルモードでのMaxComputeでのSparkの実行に関する注意事項」をご参照ください。デバッグ用にローカルモードの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()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: ベクトル化されたリーダーが一度にデータを読み取る行数を指定します。 デフォルト値: 4096spark.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。