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 | 任意 |
| Sparkアプリケーションの入力パラメーター。 複数のパラメーターはコンマ (,) で区切ります。 |
name | 任意 |
| Sparkアプリケーションの名前。 |
file | Python、Java、またはScalaで記述されたアプリケーションの場合ははい |
| Sparkアプリケーションのメインファイルを格納するパス。 メインファイルは、Pythonのエントリクラスまたはエントリ実行ファイルを含むJARパッケージにすることができます。 説明 SparkアプリケーションのメインファイルはOSSに保存する必要があります。 |
className | JavaまたはScalaで記述されたアプリケーションの場合ははい |
| JavaまたはScalaプログラムのエントリクラス。 Pythonにはエントリクラスは必要ありません。 |
sqls | SQLアプリケーションの場合ははい |
| JARパッケージやPythonファイルを指定することなく、SQLバッチアプリケーションを直接送信するために使用できるSQL文。 このパラメーターは、file、className、またはargsパラメーターと一緒に使用することはできません。 Sparkアプリケーションに対して複数のSQL文を指定できます。 複数のSQL文はコンマ (,) で区切ります。 それらは指定された順序で実行されます。 |
瓶 | 任意 |
| Sparkアプリケーションに必要なJARパッケージ。 複数のJARパッケージをコンマ (,) で区切ります。 Sparkアプリケーションが実行されると、JARパッケージがドライバおよびエグゼキュータJava仮想マシン (JVM) のクラスパスに追加されます。 説明 Sparkアプリケーションに必要なすべてのJARパッケージは、OSSに保存する必要があります。 |
ファイル | 任意 |
| Sparkアプリケーションに必要なファイル。 これらのファイルは、ドライバとエグゼキュータの作業ディレクトリにダウンロードされます。 これらのファイルに対してエイリアスを設定できます。 例: 複数のファイルをコンマ (,) で区切ります。 説明
|
アーカイブ | 任意 |
| Sparkアプリケーションに必要な圧縮パッケージ。 パッケージは TAR.GZ形式。 パッケージは、Sparkプロセスの作業ディレクトリに解凍されます。 エイリアスは、パッケージに含まれるファイルに対して設定できます。 例: 複数のパッケージをコンマ (,) で区切ります。 説明 Sparkアプリケーションに必要なすべての圧縮パッケージは、OSSに保存する必要があります。 パッケージの解凍に失敗すると、タスクも失敗します。 |
pyFiles | Pythonアプリケーションのいいえ |
| PySparkアプリケーションに必要なPythonファイル。 ファイルは、ZIP、PY、またはEGG形式である必要があります。 複数のPythonファイルが必要な場合は、ZIPまたはEGG形式のファイルを使用することを推奨します。 モジュールを使用して、PythonコードでPythonファイルを参照できます。 複数のパッケージをコンマ (,) で区切ります。 説明 PySparkアプリケーションに必要なすべてのPythonファイルをOSSに保存する必要があります。 |
conf | 可 |
| Sparkアプリケーションに必要な設定パラメーター (Apache Sparkと同様) 。 パラメーターは |
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文のkeysとvalueを一重引用符 (') または二重引用符 (') で囲まないでください。
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.coresとspark.driver.memory
spark.exe cutor.resourceSpec
各Sparkエグゼキュータのリソース仕様。 各タイプは、異なる仕様に対応する。 詳細については、このトピックの「Sparkリソースの仕様」セクションの「タイプ」列を参照してください。
例:
CONF spark.exe cutor.resourceSpec = c.small;この例では、各Sparkエグゼキュータは1コアと2 GBメモリのリソース仕様を占有します。spark.exe cutor.coresとspark.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 |