Spark は、大規模データ分析向けの高性能で使いやすいエンジンです。複雑なインメモリコンピューティングを含む幅広いアプリケーションをサポートしており、大規模で低レイテンシーのデータ分析アプリケーションを構築するのに最適です。DataWorks は、DataWorks の EMR Serverless Spark クラスターで Spark タスクを簡単に開発し、定期的にスケジュールできる Serverless Spark バッチノードを提供します。
適用範囲
コンピューティングリソースの制限: EMR Serverless Spark コンピューティングリソースのみをアタッチできます。リソースグループとコンピューティングリソースの間でネットワーク接続が利用可能であることを確認してください。
リソースグループ: このタイプのタスクを実行するには、サーバーレスリソースグループのみを使用できます。
(省略可能) リソースアクセス管理 (RAM) ユーザーの場合、タスク開発用のワークスペースに追加され、[デベロッパー] または [ワークスペース管理者] のロールが割り当てられていることを確認してください。ワークスペース管理者ロールには広範な権限があります。このロールは注意して付与してください。メンバーの追加について詳しくは、「ワークスペースへのメンバー追加」をご参照ください。
Alibaba Cloud アカウントを使用する場合は、このステップをスキップできます。
ノードの作成
詳細については、「ノードの作成」をご参照ください。
ノードの開発
Serverless Spark バッチタスクを開発する前に、まず EMR で Spark タスクコードを開発し、Java Archive (JAR) パッケージにコンパイルする必要があります。Spark 開発の詳細については、「Spark チュートリアル」をご参照ください。
シナリオに基づいてオプションを選択してください。
オプション 1: EMR JAR リソースのアップロードと参照
DataWorks では、ローカルマシンから DataStudio にリソースをアップロードし、それを参照できます。Serverless Spark バッチタスクをコンパイルした後、コンパイルされた JAR パッケージを取得します。JAR パッケージのサイズに基づいてストレージ方法を選択することをお勧めします。JAR パッケージが 500 MB 未満の場合は、ローカルマシンから DataWorks の EMR JAR リソースとしてアップロードできます。
EMR JAR リソースの作成
ナビゲーションウィンドウで、Resource Management アイコン
をクリックして [Resource Management] ページを開きます。「Resource Management」ページで、
アイコンをクリックし、 を選択して、名前として spark-examples_2.11-2.4.0.jar を入力します。[アップロード] をクリックして、spark-examples_2.11-2.4.0.jar をアップロードします。
[ストレージパス]、[データソース]、および[リソースグループ]を選択します。
重要データソースには、バインドされた Serverless Spark クラスターを選択します。
[保存] ボタンをクリックします。

EMR JAR リソースの参照
作成した [Serverless Spark Batch] ノードのコードエディタを開きます。
ナビゲーションウィンドウで Resource Management を展開します。参照するリソースを見つけ、そのリソースを右クリックしてから、[Reference Resource] を選択します。
リソースを選択すると、[Serverless Spark バッチ] ノードのコードエディタに成功メッセージが表示されます。これは、リソースが参照されたことを示しています。
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-examples_2.11-2.4.0.jar参照ステートメントがコードエディタに自動的に追加されると、リソースが参照されます。このステートメントでは、spark-examples_2.11-2.4.0.jar はアップロードした EMR JAR リソースの名前です。
spark-submit コマンドを追加するために、Serverless Spark バッチノードのコードを書き換えます。次のコードは例を示しています。
重要Serverless Spark バッチノードのコードエディタはコメントステートメントをサポートしていません。次の例を使用してタスクコードを書き換えてください。コメントを追加しないでください。コメントを追加すると、ノードの実行時にエラーが発生します。
EMR Serverless Spark の場合、spark-submit コマンドで deploy-mode パラメーターを指定する必要はありません。クラスターモードのみがサポートされています。
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.0.jar 100コマンド
説明
classコンパイルされた JAR パッケージ内のタスクのメインクラス。この例では、メインクラスは
org.apache.spark.examples.SparkPiです。説明パラメーターの詳細については、「spark-submit を使用したタスクの送信」をご参照ください。
オプション 2: OSS リソースを直接参照
ノードで OSS リソースを直接参照できます。EMR ノードを実行すると、DataWorks は OSS リソースをローカルマシンに自動的にダウンロードします。この方法は、EMR タスクが JAR 依存関係で実行する必要があるシナリオや、EMR タスクがスクリプトに依存するシナリオでよく使用されます。
JAR リソースの開発: このトピックでは、SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar を例として使用します。
JAR リソースのアップロード
OSS コンソールにログインします。ナビゲーションウィンドウで、[バケット] をクリックします。
宛先バケットの名前をクリックして、ファイル管理ページを開きます。
[ディレクトリの作成] をクリックして、JAR リソースを保存するフォルダを作成します。
フォルダに移動し、
SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarファイルをバケットにアップロードします。
JAR リソースの参照
作成した Serverless Spark バッチノードのエディタページで、コードを編集して JAR リソースを参照します。
重要次のコードでは、OSS バケット名は
mybucket、フォルダはemrです。これらを実際のバケット名とフォルダパスに置き換えてください。spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarパラメーターの説明:
パラメーター
説明
class実行するメインクラスの完全名。
ossファイルパス形式は
oss://{bucket}/{object}です。バケット: OSS 内でオブジェクトを格納するためのコンテナーです。各 バケット には一意の名前が付けられています。OSS 管理コンソール にログインして、現在のアカウント配下のすべての [バケット] を表示します。
オブジェクト: バケット に保存されているファイル名やパスなどの特定のオブジェクト。
説明パラメーターの詳細については、「spark-submit を使用したタスクの送信」をご参照ください。
ノードのデバッグ
「Run Configuration」セクションで、コンピューティングリソースやリソースグループなどのパラメーターを設定します。
構成項目
説明
[コンピューティングリソース]
バインドされた EMR Serverless Spark コンピューティングリソースを選択します。利用可能なコンピューティングリソースがない場合は、ドロップダウンリストから [コンピューティングリソースの作成] を選択します。
[リソースグループ]
ワークスペースにバインドされているリソースグループを選択します。
[スクリプトパラメーター]
ノードのコンテンツを設定する際、
${ParameterName}フォーマットで変数を定義できます。その後、[スクリプトパラメーター] セクションで [パラメーター名] および [パラメーター値] を指定する必要があります。これらの変数は、実行時に実際の値に動的に置き換えられます。詳細については、「スケジュールパラメーターのソースと式」をご参照ください。[ServerlessSpark ノードパラメーター]
Spark プログラムの実行時パラメーター。次のパラメーターがサポートされています。
DataWorks カスタム実行時パラメーター。詳細については、「付録: DataWorks パラメーター」をご参照ください。
Spark 組み込みプロパティパラメーター。詳細については、「オープンソース Spark プロパティ」および「カスタム Spark Conf パラメーター」をご参照ください。
パラメーターは次の形式で構成します:
spark.eventLog.enabled : false。DataWorks は、次の形式で Serverless Spark に送信されるコードにパラメーターを自動的に追加します:--conf key=value。説明DataWorks では、ワークスペースレベルでモジュールごとにグローバル Spark パラメーターを構成できます。また、これらのグローバルパラメーターの優先度をモジュール固有のパラメーターよりも高く設定することもできます。詳細については、「グローバル Spark パラメーターの構成」をご参照ください。
ノードエディターのツールバーで、[実行] をクリックします。
重要公開する前に、[ServerlessSpark ノードパラメーター]をRun Configurationから[スケジューリング]用の[ServerlessSpark ノードパラメーター]に同期する必要があります。
次のステップ
ノードのスケジュール設定: プロジェクトフォルダ内のノードを定期的に実行する必要がある場合、[スケジューリングポリシー] を設定し、ノードページの右側にある [スケジューリング] セクションでスケジューリングプロパティを設定できます。
ノードの公開: タスクを本番環境で実行する必要がある場合は、
アイコンをクリックしてタスクを公開します。プロジェクトフォルダ内のノードは、本番環境に公開された後にのみスケジュールに従って実行されます。ノードの O&M: タスクを公開した後、オペレーションセンターで定期タスクのステータスを表示できます。詳細については、「オペレーションセンターの使用開始」をご参照ください。
関連ドキュメント
付録: DataWorks パラメーター
パラメーター | 説明 |
SERVERLESS_QUEUE_NAME | タスクが送信されるリソースキューを指定します。デフォルトでは、タスクは[デフォルト リソースキュー]に送信されます。このキューは、[管理センター]の[クラスター管理]セクションでクラスターに設定されています。リソースの隔離と管理が必要な場合は、キューを追加できます。詳細については、「リソースキューの管理」をご参照ください。 構成方法:
|