E-MapReduce (EMR) Spark SQL ノードを作成して、構造化データを処理できます。このノードは、分散 SQL クエリエンジンを使用して、タスク実行の効率を向上させます。
前提条件
ノードを開発する前に、公式の
dataworks_emr_base_task_podイメージに基づいてカスタムイメージを作成し、Data Studio でイメージを使用してコンポーネント環境をカスタマイズします。たとえば、カスタムイメージを作成するときに、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはJAR packagesを含めたりできます。Alibaba Cloud EMR クラスターを作成し、DataWorks にバインドしていること。詳細については、「Data Studio (新バージョン): EMR 計算リソースのバインド」をご参照ください。
(オプション) Resource Access Management (RAM) ユーザーの場合は、タスク開発のためにワークスペースに追加され、[開発者] または [ワークスペース管理者] ロールが割り当てられていることを確認してください。ワークスペース管理者ロールには広範な権限があります。このロールは注意して付与してください。メンバーの追加に関する詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
特定の開発環境を使用する場合は、DataWorks のカスタムイメージ機能を使用してカスタムイメージを作成できます。詳細については、「カスタムイメージ」をご参照ください。
制限事項
このタイプのノードは、サーバーレスリソースグループ (推奨) または専用スケジューリングリソースグループでのみ実行できます。Data Studio でイメージを使用するには、サーバーレスリソースグループを使用する必要があります。
DataWorks で DataLake またはカスタムクラスターのメタデータを管理する場合は、まずクラスターで EMR-HOOK を構成する必要があります。詳細については、「Spark SQL 用に EMR-HOOK を構成する」をご参照ください。
説明クラスターで EMR-HOOK を構成しない場合、DataWorks でメタデータをリアルタイムで表示したり、監査ログを生成したり、データリネージを表示したり、EMR 関連の管理タスクを実行したりすることはできません。
EMR on ACK Spark クラスターはデータリネージの表示をサポートしていません。EMR Serverless Spark クラスターはデータリネージの表示をサポートしています。
DataLake クラスターとカスタムクラスターは、可視化による関数登録をサポートしています。EMR on ACK Spark クラスターと EMR Serverless Spark クラスターはこの機能をサポートしていません。
注意事項
現在のワークスペースにバインドされている EMR クラスターで Spark の Ranger アクセス制御を有効にした場合:
この機能は、デフォルトのイメージを使用する Spark タスクを実行する場合に、デフォルトで利用できます。
カスタムイメージを使用する Spark タスクを実行するには、チケットを送信して、この機能をサポートするようにイメージをアップグレードする必要があります。
手順
EMR Spark SQL ノードの編集ページで、次の手順を実行します。
SQL コードの開発
SQL エディターでは、${変数名} 形式を使用してタスクコードで変数を定義し、ノード編集ページの右側にある [スケジューリングパラメーター] の下にある [スケジューリング構成] セクションで各変数に値を割り当てることができます。これにより、スケジューリングシナリオでコードにパラメーターを動的に渡すことができます。スケジューリングパラメーターの使用方法の詳細については、「スケジューリングパラメーターでサポートされている形式」をご参照ください。以下に例を示します。
SHOW TABLES; -- ${var} を使用して var という名前の変数を定義します。この変数を ${yyyymmdd} に設定すると、データタイムスタンプをサフィックスとして持つテーブルを作成できます。 CREATE TABLE IF NOT EXISTS userinfo_new_${var} ( ip STRING COMMENT'IP アドレス', uid STRING COMMENT'ユーザー ID' )PARTITIONED BY( dt STRING ); -- これはスケジューリングパラメーターと共に使用できます。(オプション) 詳細パラメーターの構成
ノードの右側にある [スケジューリング構成] セクションの で、以下の表にある一意のプロパティパラメーターを構成できます。
説明使用可能な詳細パラメーターは、次の表に示すように、EMR クラスターのタイプによって異なります。
ノードの右側にある [スケジューリング構成] の下の セクションで、より多くの オープンソースの Spark パラメーターを構成できます。
DataLake クラスター/カスタムクラスター: EMR on ECS
詳細パラメーター
説明
queue
ジョブが送信されるスケジューリングキュー。デフォルト値はデフォルトのキューです。EMR の YARN の詳細については、「基本的なキュー構成」をご参照ください。
priority
優先度。デフォルト値: 1。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モード。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
ENABLE_SPARKSQL_JDBC
SQL コードを送信するメソッド。有効な値:
true: Java Database Connectivity (JDBC) を使用して SQL コードを送信します。EMR クラスターに Kyuubi サービスがない場合、SQL コードは Spark Thrift-Server に送信されます。EMR クラスターに Kyuubi サービスがある場合、SQL コードは JDBC を使用して Kyuubi に送信されます。カスタム Spark パラメーターがサポートされています。どちらのメソッドもメタデータとデータリネージをサポートしています。ただし、Thrift-Server に送信されたタスクには、メタデータに対応するノードタスクの出力情報がありません。
false(デフォルト): Spark-submit クラスターモードを使用して SQL コードを送信します。このモードでは、Spark 2 と Spark 3 の両方がメタデータ、データリネージ、および出力情報をサポートしています。カスタム Spark パラメーターもサポートされています。説明デフォルトでは、Spark-submit クラスター送信メソッドは、EMR クラスター上の HDFS の
/tmpフォルダーに一時ファイルとフォルダーを作成します。フォルダーに読み取りおよび書き込み権限があることを確認する必要があります。Spark-submit クラスターモードを使用する場合、詳細設定でカスタム SparkConf パラメーターを直接追加できます。コードをコミットすると、DataWorks はカスタムパラメーターをコマンドに自動的に追加します。例:
"spark.driver.memory" : "2g"。
DATAWORKS_SESSION_DISABLE
このパラメーターは、開発環境での直接テスト実行に適用されます。有効な値:
true: SQL 文が実行されるたびに新しい JDBC 接続が作成されます。false(デフォルト): ユーザーがノードで異なる SQL 文を実行するときに、同じ JDBC 接続が再利用されます。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdは出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。その他
Spark Configuration パラメーターをカスタマイズし、Spark 固有のプロパティを追加します。
構成フォーマットは次のとおりです:
spark.eventLog.enabled : false。DataWorks はこの構成を自動的に--conf key=valueフォーマットに変換し、EMR クラスターに配信されるコードに追加します。詳細については、「グローバル Spark パラメーターの設定」をご参照ください。説明DataWorks では、グローバル Spark パラメーターを設定できます。つまり、ワークスペースレベルで各 DataWorks モジュールが使用する Spark パラメーターを指定できます。また、グローバル Spark パラメーターが特定のモジュール内の Spark パラメーターよりも高い優先度を持つかどうかを指定することもできます。
Ranger アクセス制御を有効にするには、グローバル Spark パラメーターの設定 に移動し、
spark.hadoop.fs.oss.authorization.method=ranger構成を追加して、Ranger アクセス制御が有効になるようにします。
EMR Serverless Spark クラスター
パラメーター設定の詳細については、「Spark ジョブを送信するためのパラメーター設定」をご参照ください。
詳細パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モード。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
DATAWORKS_SESSION_DISABLE
ジョブの送信方法。Data Studio でタスクを実行すると、タスクはデフォルトで SQL Compute に送信されて実行されます。このパラメーターを使用して、タスクを SQL Compute に送信するか、キューに送信するかを指定できます。
true: タスクは実行のためにキューに送信されます。計算リソースを関連付けるときに指定されたデフォルトのキューがデフォルトで使用されます。DATAWORKS_SESSION_DISABLE パラメーターが true に設定されている場合、SERVERLESS_QUEUE_NAMEパラメーターを構成して、Data Studio で実行するためにタスクが送信されるキューを指定できます。false(デフォルト): タスクは実行のために SQL Compute に送信されます。説明このパラメーターは、Data Studio での実行中にのみ有効です。スケジュールされた実行中には有効になりません。
SERVERLESS_RELEASE_VERSION
Spark エンジンのバージョン。デフォルトでは、[管理センター] の [計算リソース] の下にあるクラスター用に構成された [デフォルトのエンジンバージョン] が使用されます。このパラメーターを構成して、タスクごとに異なるエンジンバージョンを指定できます。
説明詳細設定構成の
SERVERLESS_RELEASE_VERSIONパラメーターは、登録済みクラスターで指定された SQL Compute (セッション) が EMR Serverless Spark コンソールで未開始状態の場合にのみ有効になります。SERVERLESS_QUEUE_NAME
タスクを送信するリソースキュー。[管理センター] の [クラスター管理] でクラスター用に構成された [デフォルトのリソースキュー] にタスクがデフォルトで送信されます。リソースの隔離と管理の要件を満たすためにキューを追加できます。詳細については、「リソースキューの管理」をご参照ください。
構成方法:
ノードパラメーターを設定して、リソースキューを指定します。
グローバル Spark パラメーターを設定して、タスクを送信するリソースキューを指定できます。
説明詳細設定の
SERVERLESS_QUEUE_NAMEパラメーターは、登録済みクラスターで指定された SQL Compute (セッション) が EMR Serverless Spark コンソールで開始されていない場合にのみ有効になります。Data Studio でタスクを実行する場合: まず
DATAWORKS_SESSION_DISABLEをtrueに設定する必要があります。これにより、タスクが実行のためにキューに送信されることが保証されます。その後、SERVERLESS_QUEUE_NAMEパラメーターが有効になり、タスクキューを指定するために使用できます。オペレーションセンターでのスケジュールされた実行: タスクは強制的にキューに送信されて実行され、SQL Compute には送信できません。
SERVERLESS_SQL_COMPUTE
SQL Compute (SQL セッション) を指定します。デフォルトでは、[管理センター] の [計算リソース] の下にあるクラスター用に構成された [デフォルトの SQL コンピュート] が使用されます。このパラメーターを構成して、タスクごとに異なる SQL セッションを設定できます。SQL セッションの作成と管理の方法の詳細については、「SQL セッションの管理」をご参照ください。
その他
Spark Configuration パラメーターをカスタマイズし、Spark 固有のプロパティを追加します。
構成フォーマットは次のとおりです:
spark.eventLog.enabled : false。DataWorks はこのパラメーターを自動的に--conf key=valueフォーマットで EMR クラスターに送信されるコードに追加します。説明DataWorks サービス用にワークスペースレベルでグローバル Spark パラメーターを構成できます。ワークスペースレベルで構成されたグローバル Spark パラメーターが、特定の DataWorks サービスで単一のタスクを実行するように構成された Spark パラメーターよりも高い優先度を持つかどうかを指定できます。詳細については、「グローバル Spark パラメーターの構成」をご参照ください。
Spark クラスター: EMR on ACK
詳細パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モード。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
その他
Spark Configuration パラメーターをカスタマイズし、Spark 固有のプロパティを追加します。
構成フォーマットは次のとおりです:
spark.eventLog.enabled : false。DataWorks はこの構成を自動的に--conf key=valueフォーマットに変換し、EMR クラスターに配信されるコードに追加します。説明DataWorks サービス用にワークスペースレベルでグローバル Spark パラメーターを構成できます。ワークスペースレベルで構成されたグローバル Spark パラメーターが、特定の DataWorks サービスで単一のタスクを実行するように構成された Spark パラメーターよりも高い優先度を持つかどうかを指定できます。詳細については、「グローバル Spark パラメーターの構成」をご参照ください。
Hadoop クラスター: EMR on ECS
詳細パラメーター
説明
queue
ジョブのスケジューリングキュー。デフォルトは
defaultキューです。EMR YARN の詳細については、「キューの基本構成」をご参照ください。priority
優先度。デフォルト値: 1。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モード。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
USE_GATEWAY
このノードのジョブをゲートウェイクラスター経由で送信するかどうかを指定します。有効な値:
true: ゲートウェイクラスター経由で送信します。false(デフォルト): ゲートウェイクラスター経由で送信しません。ジョブはデフォルトでヘッダーノードに送信されます。
説明このノードを含むクラスターがゲートウェイクラスターに関連付けられておらず、パラメーター値を手動で
trueに設定した場合、後続の EMR ジョブの送信は失敗します。その他
Spark Configuration パラメーターをカスタマイズし、Spark 固有のプロパティを追加します。
構成フォーマットは次のとおりです:
spark.eventLog.enabled : false。DataWorks はこれを自動的に--conf key=valueとしてフォーマットし、EMR クラスターに送信されるコードに追加します。詳細については、「グローバル Spark パラメーターの設定」をご参照ください。説明DataWorks では、グローバル Spark パラメーターを設定できます。つまり、ワークスペースレベルで各 DataWorks モジュールが使用する Spark パラメーターを指定できます。また、グローバル Spark パラメーターが特定のモジュール内の Spark パラメーターよりも高い優先度を持つかどうかを指定することもできます。
Ranger アクセス制御を有効にするには、グローバル Spark パラメーターの設定 で
spark.hadoop.fs.oss.authorization.method=ranger構成を追加して、Ranger アクセス制御が有効になるようにします。
SQL タスクの実行
[デバッグ構成] セクションで、[計算リソース] と [リソースグループ] を構成します。
説明タスク実行のリソース要件に基づいて [CU のスケジュール] を行うこともできます。デフォルトの CU 数は
0.25です。インターネットまたは VPC (VPC) 経由でデータソースにアクセスする場合は、データソースに接続されているスケジューリング用のリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
[パラメーター] ダイアログボックスで、対応するデータソースを選択し、[実行] をクリックして SQL タスクを実行します。
ノード上のタスクを定期的に実行する場合は、必要に応じてスケジューリングプロパティを構成します。詳細については、「ノードのスケジューリング」をご参照ください。
説明コンポーネント環境をカスタマイズするには、公式の
dataworks_emr_base_task_podイメージに基づいてカスタムイメージを作成し、Data Studio でイメージを使用します。たとえば、カスタムイメージを作成するときに、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはJAR packagesを含めたりできます。ノードを構成した後、デプロイします。詳細については、「ノードとワークフローの公開」をご参照ください。
タスクがデプロイされた後、オペレーションセンターで自動的にトリガーされたタスクの実行ステータスを表示できます。詳細については、「オペレーションセンター入門」をご参照ください。
よくある質問
Data Studio で EMR Spark SQL ノードジョブを実行すると、ジョブは SQL Compute に送信されます。SQL Compute のステータスが [実行中] であることを確認する必要があります。そうでない場合、ジョブは失敗します。SQL Compute のステータスを確認するには、「SQL セッションの管理」をご参照ください。