E-MapReduce (EMR) Spark SQL ノードを作成して、分散 SQL クエリエンジンで構造化データを処理し、ジョブの実行効率を向上させることができます。
前提条件
ノードを開発する前に、公式の
dataworks_emr_base_task_podイメージに基づいてカスタムイメージを作成し、Data Studio でそのイメージを使用してコンポーネント環境をカスタマイズする必要があります。たとえば、カスタムイメージを作成する際に、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはJAR パッケージを含めたりすることができます。Alibaba Cloud E-MapReduce (EMR) クラスターを作成し、DataWorks にバインド済みであること。詳細については、「Data Studio: EMR 計算リソースの関連付け」をご参照ください。
(任意) Resource Access Management (RAM) ユーザーの場合、タスク開発用のワークスペースに追加され、開発者またはワークスペース管理者のロールが割り当てられていることを確認してください。ワークスペース管理者ロールには広範な権限が付与されているため、慎重に割り当てる必要があります。メンバーの追加に関する詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
タスクに特定の開発環境が必要な場合は、DataWorks が提供するカスタムイメージ機能を使用して、タスク実行用のカスタムコンポーネントイメージを構築できます。詳細については、「カスタムイメージ」をご参照ください。
制限事項
このタイプのノードは、サーバーレスリソースグループ (推奨) または専用スケジューリングリソースグループでのみ実行できます。Data Studio でイメージを使用するには、サーバーレスリソースグループを使用する必要があります。
DataLake またはカスタムクラスターのメタデータを DataWorks で管理するには、まずクラスターで EMR-HOOK を設定する必要があります。詳細については、「Spark SQL 用の EMR-HOOK の設定」をご参照ください。
説明クラスターで EMR-HOOK が設定されていない場合、DataWorks はメタデータをリアルタイムで表示したり、監査ログを生成したり、データリネージを表示したり、EMR 関連のデータガバナンスタスクを実行したりすることができません。
データリネージは EMR Serverless Spark クラスターではサポートされていますが、EMR on ACK Spark クラスターではサポートされていません。
ビジュアル関数登録は DataLake およびカスタムクラスターでサポートされていますが、EMR on ACK Spark または EMR Serverless Spark クラスターではサポートされていません。
注意事項
現在のワークスペースにバインドされている EMR クラスターで Spark の Ranger アクセス制御を有効にした場合:
この機能は、デフォルトイメージを使用する Spark タスクを実行する場合、デフォルトで利用可能です。
カスタムイメージを使用する Spark タスクを実行するには、この機能をサポートするためにイメージをスペックアップするため、チケットを送信する必要があります。
操作手順
EMR Spark SQL ノードの編集ページで、以下の手順を実行します。
SQL コードの開発
SQL エディターでタスクコードを開発します。コード内で
${variable_name}というフォーマットで変数を定義し、右側の[スケジュールパラメーター]セクションの[スケジュール設定]パネルでそれらに値を割り当てることができます。これにより、スケジュール実行時の動的なパラメーター渡しが可能になります。スケジュールパラメーターの使用方法について詳しくは、「スケジュールパラメーターのソースと式」をご参照ください。次のコードはその例です。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 ノードパラメーターの設定
右側のRun Configurationパネルで、セクションのパラメーターを設定します:
Spark パラメーター: これらはネイティブの Spark プロパティです。詳細については、「オープンソースの Spark プロパティ」をご参照ください。設定を簡素化し、一貫性を確保するために、Serverless Spark から Spark 設定テンプレートを直接読み込むことができます。
DataWorks パラメーター: 利用可能な詳細パラメーターは、EMR クラスタータイプによって異なります。以下の表でパラメーターについて説明します。
DataLake およびカスタム (EMR on ECS)
パラメーター
説明
queue
ジョブを送信するためのスケジューリングキュー。デフォルトのキューは
defaultです。EMR YARN の詳細については、「基本的なキュー設定」をご参照ください。priority
優先度。デフォルト値は 1 です。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行メソッド。有効な値:
true: 複数の SQL 文を一度に実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、Data Studio 環境でのテスト実行専用です。
ENABLE_SPARKSQL_JDBC
SQL コードを送信するメソッド。有効な値:
true: 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
このパラメーターは、Data Studio 環境でのテスト実行用です。有効な値:
true: SQL 文を実行するたびに新しい JDBC 接続を作成します。false(デフォルト): ユーザーが単一ノード内で異なる SQL 文を実行する場合、同じ JDBC 接続を再利用します。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdが表示されなくなります。表示するには、このパラメーターをtrueに設定します。その他
カスタム Spark 設定 パラメーター。Spark 固有のプロパティを追加できます。
フォーマット:
spark.eventLog.enabled : false。DataWorks は、EMR クラスターに送信する際に、--conf key=valueというフォーマットでコマンドを自動的に補完します。詳細については、「グローバル Spark パラメーターを設定する」をご参照ください。説明ワークスペースレベルで、異なる DataWorks モジュールに対してグローバル Spark パラメーターを設定し、これらのグローバルパラメーターがモジュール固有のパラメーターをオーバーライドするかどうかを指定できます。
Ranger アクセスの制御を有効にするには、
spark.hadoop.fs.oss.authorization.method=rangerの構成を「グローバル Spark パラメーターの設定」に追加します。
EMR Serverless Spark
パラメーター設定の詳細については、「Spark ジョブ送信のパラメーター設定」をご参照ください。
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行メソッド。有効な値:
true: 複数の SQL 文を一度に実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、Data Studio 環境でのテスト実行専用です。
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 Compute] を使用します。これは、[コンピューティングリソース] で [管理センター] に設定されたクラスターで構成されたデフォルトの SQL Compute です。このパラメーターを設定することで、特定のタスクに対して異なる SQL セッションを指定できます。SQL セッションの作成および管理については、「SQL セッションの管理」をご参照ください。
その他
カスタム Spark 設定 パラメーター。Spark 固有のプロパティを追加できます。
フォーマット:
spark.eventLog.enabled : false。 DataWorks は、--conf key=valueというフォーマットでコマンドを自動的に補完します。説明DataWorks では、ワークスペースレベルで異なる DataWorks モジュールに対してグローバル Spark パラメーターを設定できます。これらのグローバルパラメーターが特定のモジュール内のパラメーターをオーバーライドするかどうかを指定できます。グローバル Spark パラメーターの設定方法の詳細については、「グローバル Spark パラメーターの設定」をご参照ください。
EMR on ACK
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行メソッド。有効な値:
true: 複数の SQL 文を一度に実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、Data Studio 環境でのテスト実行専用です。
その他
カスタム Spark 設定 パラメーター。Spark 固有のプロパティを追加できます。
フォーマット:
spark.eventLog.enabled : false。DataWorks は、コマンドを--conf key=valueのフォーマットで自動的に補完します。説明DataWorks では、ワークスペースレベルで異なる DataWorks モジュールに対してグローバル Spark パラメーターを設定できます。これらのグローバルパラメーターが特定のモジュール内のパラメーターをオーバーライドするかどうかを指定できます。グローバル Spark パラメーターの設定方法の詳細については、「グローバル Spark パラメーターの設定」をご参照ください。
Hadoop (EMR on ECS)
パラメーター
説明
queue
ジョブを送信するためのスケジューリングキューです。デフォルトのキューは
defaultです。EMR YARN の詳細については、「キューの基本構成」をご参照ください。priority
優先度。デフォルト値は 1 です。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行メソッド。有効な値:
true: 複数の SQL 文を一度に実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、Data Studio 環境でのテスト実行専用です。
USE_GATEWAY
このノードのジョブをゲートウェイクラスター経由で送信するかどうかを指定します。有効な値:
true: ジョブをゲートウェイクラスター経由で送信します。false(デフォルト): ジョブをゲートウェイクラスターではなくヘッダーノードに送信します。
説明このノードのクラスターがゲートウェイクラスターに関連付けられていない場合、このパラメーターを
trueに設定すると、後続の EMR ジョブの送信が失敗します。その他
カスタム Spark 設定 パラメーター。Spark 固有のプロパティを追加できます。
フォーマット:
spark.eventLog.enabled : false。DataWorks は、コマンドを--conf key=valueのフォーマットで自動的に補完します。詳細については、「グローバル Spark パラメーターを設定する」をご参照ください。説明DataWorks では、ワークスペースレベルで異なる DataWorks モジュールに対してグローバル Spark パラメーターを設定できます。これらのグローバルパラメーターが特定のモジュール内のパラメーターをオーバーライドするかどうかを指定できます。
Ranger アクセスの制御を有効にするには、「グローバル Spark パラメーターの設定」で、構成
spark.hadoop.fs.oss.authorization.method=rangerを追加して、Ranger アクセスの制御が有効になるようにします。
SQL タスクの実行
[Run Configuration]パネルで、[コンピューティングリソース]と[リソースグループ]を選択します。
説明タスクのリソース要件に基づいて、[スケジューリング CU] を設定することもできます。デフォルト値は
0.25です。パブリックネットワークまたは VPC 内のデータソースにアクセスするには、データソースとの接続テストに合格したスケジューリングリソースグループを使用します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーのパラメーター ダイアログボックスで、データソースを選択し、[実行] をクリックして SQL タスクを実行します。
ノードをスケジュールで実行するには、ビジネス要件に応じてそのスケジュールプロパティを設定します。詳細については、「ノードのスケジュールの設定」をご参照ください。
説明コンポーネント環境をカスタマイズするには、公式の
dataworks_emr_base_task_podイメージに基づいてカスタムイメージを作成し、Data Studio でそのイメージを使用します。たとえば、カスタムイメージを作成する際に、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはJAR パッケージを含めたりすることができます。ノードを設定した後、公開する必要があります。詳細については、「ノードまたはワークフローの公開」をご参照ください。
タスクを公開した後、オペレーションセンターでそのスケジュールステータスを表示できます。詳細については、「オペレーションセンターの概要」をご参照ください。
よくある質問
DataStudio で SQL Compute を必要とする EMR Spark SQL ノードタスクを実行する場合、タスクの失敗を回避するために、SQL Compute インスタンスが [実行中] 状態であることを確認してください。SQL Compute のステータスを表示するには、「SQL セッションの管理」をご参照ください。