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

AnalyticDB:spark-submitを使用してSparkアプリケーションを開発する

最終更新日:Oct 08, 2024

AnalyticDB for MySQLは、spark-submitコマンドラインツールを提供します。 クライアントを使用してSpark開発用AnalyticDB for MySQLクラスターに接続する場合、spark-submitコマンドラインツールを使用してSparkアプリケーションを送信できます。 このトピックでは、AnalyticDB for MySQLのspark-submitコマンドラインツールを使用してSparkアプリケーションを開発する方法について説明します。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Editionクラスターが作成されます。

  • AnalyticDB for MySQLクラスターのジョブリソースグループが作成されます。 詳細については、「リソースグループの作成」をご参照ください。

  • Object Storage Service (OSS) バケットは、AnalyticDB for MySQLクラスターと同じリージョンに作成されます。

  • Java Development Kit (JDK) 1.8以降がインストールされています。

使用上の注意

spark-submitコマンドラインツールを使用してジョブを開発する場合、Spark JARアプリケーションのみを送信できます。 Spark SQLアプリケーションは送信できません。

spark-submitコマンドラインツールのダウンロードとインストール

  1. 次のコマンドを実行して、adb-spark-toolkit-submit-0.0.1.tar.gzという名前のspark-submitコマンドラインツールのインストールパッケージをダウンロードします。

    wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
  2. 次のコマンドを実行して、インストールパッケージを解凍し、spark-submitコマンドラインツールをインストールします。

    tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz

Sparkアプリケーション設定パラメーター

spark-submitコマンドラインツールのインストールパッケージを解凍した後、adb-spark-toolkit-submit/confディレクトリに移動し、vim spark-defaults.confコマンドを実行してspark-defaults.confファイルの設定パラメーターを変更します。 spark-submitスクリプトは、設定ファイルを自動的に読み取ります。 設定パラメーターは、すべてのSparkアプリケーションで有効になります。

次の表に、Sparkアプリケーションの設定パラメーターを示します。

パラメーター

必須

説明

keyId

はい

AnalyticDB for MySQLリソースにアクセスする権限を持つAlibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。

AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。

LTAI5tFosFYFgrt3NzBX ****

secretId

はい

AnalyticDB for MySQLリソースへのアクセス権限を持つAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。

1BvoSGRT4FV7GB07VVgrRGUty ****

regionId

はい

AnalyticDB for MySQLクラスターのリージョンID。

cn-hangzhou

clusterId

はい

AnalyticDB for MySQLクラスターのID。

amv-bp1908350u5 ****

rgName

はい

Sparkアプリケーションの実行に使用されるジョブリソースグループの名前。

test

ossKeyId

いいえ

Spark JARアプリケーションに必要なJARパッケージがオンプレミスのデバイスに保存されている場合は、ossKeyId、ossSecretId、およびossUploadPathパラメーターを指定する必要があります。

  • ossKeyIdパラメーターとossSecretIdパラメーターは、使用するAlibaba CloudアカウントまたはRAMユーザーのAccessKey IDとAccessKey secretを指定します。 RAMユーザーにはAliyunOSSFullAccess権限が必要です。

  • ossUploadPathパラメーターは、オンプレミスJARパッケージをアップロードするOSSパスを指定します。

LTAI5tFosFYFgrt3NzBX ****

ossSecretId

いいえ

1BvoSGRT4FV7GB07VVgrRGUty ****

ossUploadPath

いいえ

oss:// testBucketname/jars/test1.jar

confパラメータ

いいえ

Sparkアプリケーションに必要な設定パラメーター。Apache Sparkのものと同様です。 パラメーターはkey:value形式である必要があります。 複数のパラメーターはコンマ (,) で区切ります。 詳細については、「Sparkアプリケーション設定パラメーター」をご参照ください。

Sparkアプリケーションの送信

  1. Sparkアプリケーションに必要なJARパッケージをOSSにアップロードします。 詳細は、「簡易アップロード (Simple upload)」をご参照ください。

  2. 次のコマンドを実行して、spark-submitコマンドラインツールのディレクトリに移動します。

    cd adb-spark-toolkit-submit
  3. Sparkアプリケーションを次の形式で送信します。

    ./bin/spark-submit  \
    --class com.aliyun.spark.oss.SparkReadOss \
    --verbose \
    --name Job1 \
    --jars oss://testBucketname/jars/test.jar,oss://testBucketname/jars/search.jar\
    --conf spark.driver.resourceSpec=medium \
    --conf spark.executor.instances=1 \
    --conf spark.executor.resourceSpec=medium \
    oss://testBucketname/jars/test1.jar args0 args1
    説明

    Sparkアプリケーションを送信すると、次のいずれかのリターンコードが返されます。

    • 255: アプリケーションの実行に失敗しました。

    • 0: アプリケーションは正常に実行されます。

    • 143: アプリケーションを終了します。

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    -- class

    JavaまたはScalaアプリケーションのエントリクラス。 Pythonアプリケーションにはエントリクラスは必要ありません。

    -- verbose

    Sparkアプリケーションの送信時に生成されるログを表示します。

    -- name

    Sparkアプリケーションの名前。

    -- 瓶

    Sparkアプリケーションに必要なJARパッケージの絶対パス。 複数のパスはコンマ (,) で区切ります。

    オンプレミスパスを指定する場合は、次の項目に注意してください。

    • 使用するRAMユーザーには、AliyunOSSFullAccess権限が必要です。

    • ossUploadPathパラメーターがconf/spark-defaults.confファイルで設定されていることを確認し、オンプレミスJARパッケージをアップロードするOSSパスを指定します。

    • オンプレミスJARパッケージのアップロード中に、メッセージダイジェスト5 (MD5) アルゴリズムを使用して生成されたハッシュ値に基づいてパッケージが検証されます。 指定されたOSSパスに同じ名前とMD5値を持つJARパッケージがすでに存在する場合、アップロードはキャンセルされます。

    • OSSパスでJARパッケージを手動で更新した場合、パッケージの対応するMD5ファイルを削除する必要があります。

    -- conf

    Sparkアプリケーションの設定パラメーター。

    Sparkアプリケーションの設定パラメーターは、オープンソースのspark-submitコマンドラインツールの設定パラメーターと非常によく似ています。 オープンソースのspark-submitコマンドラインツールとは異なり、AnalyticDB for MySQLのspark-submitコマンドラインツールに固有の設定パラメーターについては、このトピックの「AnalyticDB for MySQL spark-submitとオープンソースspark-submitの違い」を参照してください。

    説明

    次の形式で複数のパラメーターを指定します。-- conf key1=value1 -- conf key2=value2

    oss:// testBucketname/jars/test1.jar args0 args1

    Sparkアプリケーションのメインファイルの絶対パス。 メインファイルには、エントリクラスを含むJARパッケージ、またはPythonのエントリポイントとして機能する実行可能ファイルを使用できます。

    説明

    SparkアプリケーションのメインファイルをOSSに保存する必要があります。

    args

    JARパッケージに必要な引数。 複数の引数をスペースで区切ります。

Sparkアプリケーションのリストの照会

./bin/spark-submit --list --clusterId <cluster_Id>  --rgName <ResourceGroup_name> --pagenumber 1 --pagesize 3

パラメーター:

  • cluster_Id: AnalyticDB for MySQLクラスターのID。

  • ResourceGroup_name: Sparkアプリケーションの実行に使用されるジョブリソースグループの名前。

Sparkアプリケーションのステータスの照会

./bin/spark-submit --status <appId>

Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。

送信パラメーターとSparkアプリケーションのSpark UI URLの照会

./bin/spark-submit --detail <appId>

Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。

コマンド出力のSpark WEB UIパラメーターは、Spark UI URLを示します。

Sparkアプリケーションのログの照会

./bin/spark-submit --get-log <appId>

Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。

Sparkアプリケーションの終了

./bin/spark-submit --kill <appId>

Sparkアプリケーションに関する情報から、アプリケーションのappIdを取得できます。 詳細については、このトピックの「Sparkアプリケーションの一覧の照会」を参照してください。

AnalyticDB for MySQLのスパーク送信とオープンソースのスパーク送信の違い

AnalyticDB for MySQLに固有のパラメーターspark-submit

パラメーター

説明

-- api-retry-times

AnalyticDB for MySQLのspark-submitコマンドラインツールがコマンドの実行に失敗した場合に許可される再試行の最大数。 デフォルト値: 3。 Sparkアプリケーションを送信するコマンドが再試行されない

なぜなら、提出はべき等の操作ではないからです。 ネットワークのタイムアウトなどの理由で失敗した送信は、実際にバックグラウンドで成功した可能性があります。 この場合、アプリケーション送信コマンドを再試行すると、送信が重複する可能性があります。 アプリケーションが正常に送信されたかどうかを確認するには、-- listパラメーターを使用して、送信されたアプリケーションのリストを取得します。 AnalyticDB for MySQLコンソールにログインして、アプリケーションリストを確認することもできます。

-- タイムアウト秒

AnalyticDB for MySQLのspark-submitコマンドラインツールが失敗したコマンドを再試行するまでのタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。

-- enable-inner-endpoint

内部ネットワーク接続を有効にします。 ECS (Elastic Compute Service) インスタンスからSparkアプリケーションを送信する場合、このパラメーターを指定して、AnalyticDB for MySQLのspark-submitコマンドラインツールが仮想プライベートクラウド (VPC) 内のサービスにアクセスできるようにします。

-- リスト

アプリケーションのリストを照会します。 ほとんどの場合、このパラメーターは -- pagenumberおよび -- pagesizeパラメーターとともに使用されます。

たとえば、最初のページで5つのアプリケーションをクエリする場合は、次のパラメーターを指定できます。

--list 
--pagenumber 1 
--pagesize 5

-- pagenumber

ページ番号。 デフォルト値は 1 です。

-- pagesize

各ページで返すアプリケーションの最大数。 デフォルト値は 10 です。

-殺す

アプリケーションを終了します。

-- get-log

アプリケーションのログ。

-- status

アプリケーションに関する詳細。

オープンソースspark-submitに固有のパラメータ

AnalyticDB for MySQLのspark-submitコマンドラインツールは、オープンソースのspark-submitコマンドラインツールの特定の設定パラメーターをサポートしていません。 詳細については、「Sparkアプリケーション設定パラメーター」トピックの「AnalyticDB For MySQLでサポートされていない設定パラメーター」セクションをご参照ください。