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

EMR JAR リソースを参照します。
作成した [Serverless Spark Batch] ノードを開きます。
左側のナビゲーションウィンドウで、リソース管理に移動します。参照したいリソースを見つけ、リソースを右クリックして [リソースの参照] を選択します。
[Serverless Spark Batch] ノードのコードエディタに成功メッセージが表示されます。これは、コードリソースが参照されたことを示します。
##@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 リソースの名前です。
Serverless Spark Batch ノードのコードを書き換えて、spark-submit コマンドを追加します。次のコードは例です。
重要Serverless Spark Batch ノードのコードエディタはコメント文をサポートしていません。次の例に基づいてタスクコードを書き換える必要があります。コメントを追加しないでください。コメントを追加すると、ノードの実行時にエラーが発生します。
spark-submit を使用して送信されるタスクの場合、deploy-mode パラメーターを cluster に設定することをお勧めします。パラメーターを client に設定することはお勧めしません。
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi --master yarn spark-examples_2.11-2.4.0.jar 100コマンド
説明
classコンパイルされた JAR パッケージ内のタスクのメインクラス。この例では、メインクラスは
org.apache.spark.examples.SparkPiです。masterSpark アプリケーションの実行モード。Spark ノードは、Yarn クラスターモードを使用したジョブの送信のみをサポートします。
オプション 2: OSS リソースを直接参照する
ノードで OSS リソースを直接参照できます。EMR ノードを実行すると、DataWorks は OSS リソースをローカルマシンに自動的にロードします。このメソッドは、EMR タスクが JAR 依存関係で実行する必要があるか、スクリプトに依存するシナリオでよく使用されます。
JAR リソースを開発する: このトピックでは、SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar を例として使用します。
JAR リソースをアップロードします。
OSS コンソールにログインします。左側のナビゲーションウィンドウで、[バケット] をクリックします。
宛先バケットの名前をクリックして、バケット内のファイルを示すページに移動します。
[フォルダの作成] をクリックして、JAR リソースを保存するフォルダを作成します。
フォルダに移動し、
SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarファイルをバケットにアップロードします。
JAR リソースを参照します。
作成した Serverless Spark Batch ノードのエディターページで、コードを編集して JAR リソースを参照します。
重要次のコードでは、OSS バケット名は
mybucketで、フォルダはemrです。実際のパスに置き換えてください。spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo --master yarn oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar参照されるメトリックの説明:
パラメーター
説明
class実行するメインクラスの完全な名前。
masterSpark アプリケーションの実行モード。
ossファイルパスフォーマットは
oss://{bucket}/{object}です[バケット]: OSS でオブジェクトを格納するためのコンテナー。各 [バケット] には一意の名前があります。OSS 管理コンソールにログインして、現在のアカウントのすべての [バケット] を表示します。
[オブジェクト]: [バケット] に格納されている特定のオブジェクト (ファイル名またはパス)。
ノードのテスト
[テスト構成] セクションで、[計算リソース] や [リソースグループ] などのパラメーターを構成します。
構成項目
説明
計算リソース
バインドされた EMR Serverless Spark 計算リソースを選択します。利用可能な計算リソースがない場合は、ドロップダウンリストから [計算リソースの作成] を選択できます。
リソースグループ
ワークスペースにバインドされているリソースグループを選択します。
スクリプトパラメーター
ノードコンテンツを構成するときに、
${parameter_name}フォーマットを使用して変数を定義できます。その後、[スクリプトパラメーター] セクションで [パラメーター名] と [パラメーター値] を指定する必要があります。これらの変数は、実行時に実際の値に動的に置き換えられます。詳細については、「スケジューリングパラメーターでサポートされているフォーマット」をご参照ください。ServerlessSpark ノードパラメーター
Spark プログラムの実行時パラメーター。Spark プロパティパラメーター設定の詳細については、「オープンソースの Spark プロパティ」をご参照ください。
ノードエディターのツールバーで、[実行] をクリックします。
重要公開する前に、[デバッグ構成] の [ServerlessSpark ノードパラメーター] を [スケジューリング構成] の [ServerlessSpark ノードパラメーター] に同期する必要があります。
次のステップ
ノードのスケジュール: プロジェクトフォルダ内のノードを定期的に実行するには、右側の [スケジューリング] ペインで [スケジューリングポリシー] と関連するスケジューリングプロパティを構成します。
ノードの公開: ノードを本番環境で実行する必要がある場合は、
アイコンをクリックして公開プロセスを開始します。プロジェクトフォルダ内のノードの定期的なスケジューリングは、本番環境に公開された後にのみ有効になります。ノードの O&M: ノードを公開した後、オペレーションセンターで定期タスクのステータスを表示できます。詳細については、「オペレーションセンター入門」をご参照ください。