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

:Sparkアプリケーション設定ガイド

最終更新日:Mar 10, 2025

AnalyticDB for MySQL Data Lakehouse Edition (V3.0) のSparkアプリケーションは、JSON形式で説明されます。 設定スクリプトには、アプリケーション名、JARパッケージパス、設定パラメーターなど、アプリケーションに関するすべての情報が含まれています。 このトピックでは、Sparkアプリケーションを設定する方法について説明します。

注意事項

Data LakehouseEdition (V3.0) がカナリアリリースされました。 Data Lakehouse Edition (V3.0) のトライアルをリクエストするには、 チケットを起票してください。

バッチアプリケーション

Sparkは、バッチストリーミング、およびSQLアプリケーションをサポートします。 特に、バッチアプリケーションを実行するには、エントリクラスを含むJARパッケージまたはPythonファイルが必要です。 また、アプリケーションに必要なJARパッケージ、Pythonサンドボックス、およびビジネスの実際の要件に基づいたエントリクラスパラメーターが含まれるように変更される場合もあります。

Spark-submitツールと同様のコマンドラインパラメーターを使用して、AnalyticDB for MySQLでsparkバッチアプリケーションを作成できます。

バッチアプリケーションの設定例

次の例は、Object Storage Service (OSS) からデータを読み取る一般的なSparkバッチアプリケーションを示しています。 設定スクリプトには、アプリケーション名、エントリクラスを含むJARパッケージ、エントリクラスとそのパラメーター、実行パラメーターなどのパラメーターが含まれます。 設定スクリプトはJSON形式で記述されています。 例:

{
  "args": ["oss://${testBucketName}/data/test/test.csv"] 、
  "name": "spark-oss-test" 、
  "file": "oss://${testBucketName/jars/test/spark-examples-0.0.1-SNAPSHOT.jar" 、
  "className": "com.aliyun.spark.oss.SparkReadOss" 、
  "conf": {
    "spark.driver.resourceSpec": "medium" 、
    "spark.exe cutor.resourceSpec": "medium" 、
    "spark.exe cutor.instances": 2、
    "spark.adb.connectors": "oss"
  }
}

バッチアプリケーションの設定に使用するパラメーターを次の表に示します。

パラメーター

必須/任意

説明

args

任意

"args":["args0", "args1"]

Sparkアプリケーションの入力パラメーター。 複数のパラメーターはコンマ (,) で区切ります。

name

任意

"name": "your_job_name"

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

file

Python、Java、またはScalaで記述されたアプリケーションの場合ははい

"file":"oss:// testBucketName/path/to/your/jar"

Sparkアプリケーションのメインファイルを格納するパス。 メインファイルは、Pythonのエントリクラスまたはエントリ実行ファイルを含むJARパッケージにすることができます。

説明

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

className

JavaまたはScalaで記述されたアプリケーションの場合ははい

"className":"com.aliyun.spark.oss.SparkReadOss"

JavaまたはScalaプログラムのエントリクラス。 Pythonにはエントリクラスは必要ありません。

sqls

SQLアプリケーションの場合ははい

"sqls":["select * from xxxx","show databases"]

JARパッケージやPythonファイルを指定することなく、SQLバッチアプリケーションを直接送信するために使用できるSQL文。 このパラメーターは、fileclassName、またはargsパラメーターと一緒に使用することはできません。 Sparkアプリケーションに対して複数のSQL文を指定できます。 複数のSQL文はコンマ (,) で区切ります。 それらは指定された順序で実行されます。

任意

"jars":["oss:// testBucketName/path/to/jar","oss:// testBucketName/path/to/jar"]

Sparkアプリケーションに必要なJARパッケージ。 複数のJARパッケージをコンマ (,) で区切ります。 Sparkアプリケーションが実行されると、JARパッケージがドライバおよびエグゼキュータJava仮想マシン (JVM) のクラスパスに追加されます。

説明

Sparkアプリケーションに必要なすべてのJARパッケージは、OSSに保存する必要があります。

ファイル

任意

"files":["oss:// testBucketName/path/to/files","oss:// testBucketName/path/to/files"]

Sparkアプリケーションに必要なファイル。 これらのファイルは、ドライバとエグゼキュータの作業ディレクトリにダウンロードされます。

これらのファイルに対してエイリアスを設定できます。 例: oss:// testBucketName/test/test1.txt#test1 この例では、ファイルのエイリアスとしてtest1が使用されます。 を指定してファイルにアクセスできます。/test1または。/test1.txtです。

複数のファイルをコンマ (,) で区切ります。

説明
  • このパラメーターにoss://<path/to>/ ディレクトリのlog4j.propertiesファイルが指定されている場合、Sparkアプリケーションはlog4j.propertiesファイルをログ設定ファイルとして使用します。

  • Sparkアプリケーションに必要なファイルはすべてOSSに保存する必要があります。

アーカイブ

任意

"archives":["oss:// testBucketName/path/to/archives","oss:// testBucketName/path/to/archives"]

Sparkアプリケーションに必要な圧縮パッケージ。 パッケージは TAR.GZ形式。 パッケージは、Sparkプロセスの作業ディレクトリに解凍されます。

エイリアスは、パッケージに含まれるファイルに対して設定できます。 例: oss:// testBucketName/test/test1.tar.gz#test1 この例では、ファイルのエイリアスとしてtest1が使用されます。 test2.txtがtest1.tar.gzパッケージに含まれるファイルであるとします。 を指定してファイルにアクセスできます。/test1/test2.txtまたは。/test1.tar.gz/test2.txtです。

複数のパッケージをコンマ (,) で区切ります。

説明

Sparkアプリケーションに必要なすべての圧縮パッケージは、OSSに保存する必要があります。 パッケージの解凍に失敗すると、タスクも失敗します。

pyFiles

Pythonアプリケーションのいいえ

"pyFiles":["oss:// testBucketName/path/to/pyfiles","oss:// testBucketName/path/to/pyfiles"]

PySparkアプリケーションに必要なPythonファイル。 ファイルは、ZIP、PY、またはEGG形式である必要があります。 複数のPythonファイルが必要な場合は、ZIPまたはEGG形式のファイルを使用することを推奨します。 モジュールを使用して、PythonコードでPythonファイルを参照できます。 複数のパッケージをコンマ (,) で区切ります。

説明

PySparkアプリケーションに必要なすべてのPythonファイルをOSSに保存する必要があります。

conf

"conf":{"spark.driver.resourceSpec": "medium",spark.exe cutor.resourceSpec ":" medium,"spark.exe cutor.instances": 2,"spark.adb.connectors": "oss"}

Sparkアプリケーションに必要な設定パラメーター (Apache Sparkと同様) 。 パラメーターはkey: value形式である必要があります。 複数のパラメーターはコンマ (,) で区切ります。 Apache Sparkの設定パラメーターと矛盾する設定パラメーター、またはAnalyticDB For MySQLに固有の設定パラメーターの詳細については、このトピックの「confパラメーターの説明」を参照してください。

SQLアプリケーション

AnalyticDB for MySQLを使用すると、ステートメントをJARファイルにパッケージ化したり、Pythonコードを記述したりすることなく、コンソールでSpark SQLアプリケーションを直接送信できます。 これにより、データ開発者はSparkを使用してデータを分析できます。 Spark SQLアプリケーションを送信するときは、アプリケーションタイプをSQLに設定する必要があります。

SQLアプリケーションの構成例

-- SparkSQLの例にすぎません。 コンテンツを変更し、sparkプログラムを実行します。

conf spark.driver.resourceSpec=medium;
conf spark.exe cutor.instances=2;
conf spark.exe cutor.resourceSpec=medium;
con f spark.app.name=Spark SQLテスト;
conf spark.adb.connectors=oss;

-- ここにあなたのsqlステートメントがあります
ショーデータベース; 

Spark SQLでサポートされているステートメントタイプ

SparkエディターでSQL文を編集できます。 個々のステートメントはセミコロン (;) で区切る必要があります。

Spark SQLは、次のタイプのステートメントをサポートします。

  • CONFステートメント

    • CONF文は、Spark設定を指定するためにSQL文の前に配置されます。

    • 各CONFステートメントは、Sparkアプリケーションを送信するためのパラメーターの値を指定します。 個々のCONFステートメントは、セミコロン (;) で区切る必要があります。

    • CONF文のkeysvalueを一重引用符 (') または二重引用符 (') で囲まないでください。

    • CONFステートメントでサポートされている設定パラメーターの詳細については、このトピックの「confパラメーターの説明」を参照してください。

  • ADD JARステートメント

    • ADD JARステートメントは、SQLステートメントの前に配置され、ユーザー定義関数 (UDF) のJARパッケージやさまざまなデータソースコネクタのJARパッケージなど、Spark SQLステートメントの実行に必要なJARパッケージを追加します。 JARパッケージは、OSSパス形式で指定する必要があります。

    • 各ADD JARステートメントは、OSSパス形式でJARパッケージを指定します。 パスを一重引用符 (') または二重引用符 (") で囲む必要はありません。 個々のADD JARステートメントは、セミコロン (;) で区切る必要があります。

  • Spark SQLでサポートされているDDLまたはDMLステートメント (SELECTおよびINSERTなど) 。

メタデータサービスの切り替え

デフォルトでは、Spark SQLはAnalyticDB for MySQLが提供するメタデータサービスを使用します。 次のいずれかの方法を使用して、別のメタデータサービスに切り替えることができます。

  • インメモリカタログ

    CON F spark.sql.ca talogImplementation=インメモリ;
  • talogImplementation=Hive F spark.sql.ca Spark

    CONに組み込まれているhiveメタストア2.3.7またはその他のバージョン。CONF spark.sql.hive.metastore.version = 2.3.7; 
    説明

    自己管理型Hiveメタストアに接続するには、既定の設定を標準のApache Spark設定に置き換えることができます。 標準のApache Spark設定の詳細については、「Spark設定」をご参照ください。

confパラメータの説明

AnalyticDB for MySQLのSpark設定パラメーターは、Apache Sparkの設定パラメーターと似ています。 次の表は、Apache Sparkの設定パラメーターと一致しないAnalyticDB for MySQLの設定パラメーター、およびAnalyticDB for MySQLに固有の設定パラメーターについて説明しています。

  • ドライバーexecutorリソースの指定

    重要

    次の表に示すパラメーターの使用方法は、Apache Sparkの使用方法とは異なります。

    spark.driver.resourceSpecパラメーターとspark.exe cutor.resourceSpecパラメーターは同じ値に設定されます。

    項目

    説明

    Apache Sparkの対応するパラメーター

    spark.driver.resourceSpec

    Sparkドライバーのリソース仕様。 各タイプは、異なる仕様に対応する。 詳細については、このトピックの「Sparkリソースの仕様」セクションの「タイプ」列を参照してください。

    例: CONF spark.driver.resourceSpec = c.small; この例では、Sparkドライバーは1コアと2 GBメモリのリソース仕様を占有します。

    spark.driver.coresspark.driver.memory

    spark.exe cutor.resourceSpec

    各Sparkエグゼキュータのリソース仕様。 各タイプは、異なる仕様に対応する。 詳細については、このトピックの「Sparkリソースの仕様」セクションの「タイプ」列を参照してください。

    例: CONF spark.exe cutor.resourceSpec = c.small; この例では、各Sparkエグゼキュータは1コアと2 GBメモリのリソース仕様を占有します。

    spark.exe cutor.coresspark.exe cutor.memory

  • Spark UI

    パラメーター

    デフォルト値

    説明

    spark.app.log.rootPath

    なし

    Spark UIイベントログとAnalyticDB for MySQL Sparkアプリケーションによって生成されたログが格納されるディレクトリ。 このパラメーターには、OSSパスを手動で指定する必要があります。 そうしないと、Spark UIにアクセスしたり、アプリケーションログを表示できません。

  • RAMユーザーO&M

    パラメーター

    デフォルト値

    説明

    spark.adb.roleArn

    なし

    RAMコンソールでSparkアプリケーションを送信する権限が付与されているRAMロールのAlibaba Cloudリソース名 (ARN) 。 詳細については、「RAMロールの概要」をご参照ください。 このパラメーターは、SparkアプリケーションをRAMユーザーとして送信する場合にのみ必要です。

  • AnalyticDB for MySQLのSparkに組み込まれたデータソースコネクタ

    パラメーター

    デフォルト値

    説明

    spark.adb.connectors

    なし

    AnalyticDB for MySQLのSparkにある組み込みコネクタの名前。 コネクタ名はコンマ (,) で区切ります。 有効な値: OSS、hbase1.x、およびtablestore。

    spark.hadoop.io.com pression.codec.snappy.native

    false

    Snappyファイルが標準のSnappy形式であるかどうかを指定します。 デフォルトでは、HadoopはHadoopで編集されたSnappyファイルを認識します。 このパラメーターをtrueに設定すると、標準のSnappyライブラリが解凍に使用されます。 それ以外の場合、HadoopのデフォルトのSnappyライブラリが解凍に使用されます。

  • VPCアクセスとデータソース接続

    パラメーター

    デフォルト値

    説明

    spark.adb.eni.vswitchId

    なし

    elastic network interface (ENI) に関連付けられているvSwitchのID。 このIDは、仮想プライベートクラウド (VPC) へのアクセスに使用されます。 Elastic Compute Service (ECS) インスタンスが宛先データソースにアクセスできる場合、このパラメーターをECSインスタンスが接続されているvSwitchのIDに設定できます。

    spark.adb.eni.securityGroupId

    なし

    ENIに関連付けられているセキュリティグループのID。 このIDはVPCへのアクセスに使用されます。 ECSインスタンスが宛先データソースにアクセスできる場合、このパラメーターをECSインスタンスが属するセキュリティグループのIDに設定できます。

    spark.adb.eni.extraHosts

    なし

    IPアドレスとホスト名のマッピング。 このパラメーターを使用すると、Sparkはデータソースのホスト名を解析できます。 このパラメーターは、自己管理型Hiveデータソースに接続する場合に必要です。

    説明

    IPアドレスとホスト名をスペースで区切ります。 IPアドレスとホスト名の複数のグループをコンマ (,) で区切ります。 例: "ip0 master0, ip1 master1" 。

  • Spark SQLからAnalyticDB for MySQLのメタデータへの接続

    パラメーター

    デフォルト値

    説明

    spark.sql.hive.metastore.version

    なし

    Hiveメタストアのバージョン。 このパラメーターをADBに設定すると、AnalyticDB for MySQLのメタデータにアクセスし、AnalyticDB for MySQLからテーブルデータを読み取ることができます。

  • アプリケーションreties

    パラメーター

    デフォルト値

    説明

    spark.adb.maxAttempts

    1

    リトライの最大回数は 10 回です。 デフォルト値は1です。これは、スパークアプリケーションが失敗しても再試行されないことを示します。

    このパラメーターを3に設定すると、Sparkアプリケーションはスライドウィンドウ内で最大3回再試行されます。

    spark.adb.attemptFailuresValidityInterval

    ロングマックス

    スライドウィンドウの長さ。 単位:ミリ秒。

    たとえば、このパラメーターを6000に設定した場合、再試行が失敗してから過去6,000ミリ秒以内の再試行回数がカウントされます。 再試行の回数がspark.adb.maxAttemptsの値より少ない場合、システムは引き続きアプリケーションを再試行します。

  • ソース設定

    パラメーター

    デフォルト値

    説明

    spark.adb.driver.cpu-vcores-ratio

    1

    ドライバーが使用する実際のCPUコアに対するvCPUの比率。 たとえば、ドライバーが2コアと8 GBメモリの中程度のリソース仕様を使用し、このパラメーターを2に設定した場合、ドライバーは4つのvCPUを並行して実行できます。 同じパフォーマンスを達成するために、spark.driver.coresを4に設定することもできます。

    spark.adb.exe cutor.cpu-vcores-ratio

    1

    executorが使用する実際のCPUコアに対するvCPUの比率。 タスクのCPU使用率が低い場合は、このパラメーターを設定してCPU使用率を上げることができます。 たとえば、エグゼキュータが2コアと8 GBメモリの中程度のリソース仕様を使用し、このパラメーターを2に設定した場合、エグゼキュータは4つのvCPUを並行して実行できます。 つまり、4つのタスクが並行してスケジュールされます。 spark.exe cutor.coresを4に設定して、同じパフォーマンスを実現することもできます。

Sparkリソース仕様

データ型

リソースプランの仕様

CPUコア

メモリ (GB)

c. 小さい

1

2

small

1

4

m.small

1

8

c.medium

2

4

medium

2

8

m.medium

2

16

c. 大きい

4

8

大きい

4

16

m.large

4

32

c.xlarge

8

16

xlarge

8

32

m.xlarge

8

64

c.2xlarge

16

32

2xlarge

16

64

m.2xlarge

16

128