E-MapReduce (EMR) Spark SQL ノードを作成して、分散 SQL クエリエンジンを用いて構造化データを処理し、ジョブ実行効率を向上させます。
前提条件
ノードのコンポーネント環境をカスタマイズするには、公式の
dataworks_emr_base_task_podイメージに基づいてカスタムイメージを作成します。詳細については、「カスタムイメージ」および「Data Development でのイメージの使用」をご参照ください。たとえば、カスタムイメージを作成する際に、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはJAR packagesへの依存関係を追加できます。Alibaba Cloud E-MapReduce (EMR) クラスターを作成し、DataWorks に登録済みである必要があります。詳細については、「Data Studio:EMR 計算リソースの関連付け」をご参照ください。
(任意:RAM ユーザーの場合のみ必須)タスク開発を担当する RAM ユーザーをワークスペースに追加し、開発者 または ワークスペース管理者 のロールを割り当てます。ワークスペース管理者ロールは広範な権限を持つため、慎重に付与してください。メンバーの追加方法については、「ワークスペースへのメンバー追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、この手順をスキップできます。
タスクで特定の環境が必要な場合、DataWorks のカスタムイメージ機能を使用して、必要なコンポーネントを含むイメージを構築できます。詳細については、「カスタムイメージ」をご参照ください。
制限事項
このタスクタイプは、サーバーレスリソースグループ(推奨)または専用スケジューリングリソースグループでのみ実行されます。Data Development でイメージを使用する場合は、必ずサーバーレスリソースグループを使用してください。
DataWorks で DataLake またはカスタムクラスターのメタデータを管理するには、クラスター上で EMR-HOOK を構成する必要があります。詳細については、「Spark SQL の EMR-HOOK 構成」をご参照ください。
説明クラスター上で EMR-HOOK が構成されていない場合、DataWorks ではリアルタイムでのメタデータ表示、監査ログの生成、データリネージの表示、および EMR 関連のデータガバナンスタスクを実行できません。
ACK 上の EMR Spark クラスターではデータリネージの表示はサポートされませんが、EMR サーバーレス Spark クラスターではサポートされます。
DataLake およびカスタムクラスターではビジュアル関数登録がサポートされますが、ACK 上の EMR および EMR サーバーレス 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 ノードパラメーター または DataWorks パラメーター セクションで、以下の表に示す詳細パラメーターを構成できます。
説明利用可能な詳細パラメーターは、EMR クラスタータイプによって異なります(以下の表を参照)。
その他の オープンソース Spark プロパティ は、ページ右側の EMR ノードパラメーターSpark パラメーター で構成できます。
DataLake およびカスタムクラスター:EMR on ECS
パラメーター
説明
queue
ジョブ提出のためのスケジューリングキューです。デフォルトのキューは
defaultです。EMR YARN の詳細については、「基本キュー構成」をご参照ください。priority
ジョブの優先度です。デフォルト値は 1 です。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効値:
true:複数の SQL 文を一度に実行します。false(デフォルト):1 つの SQL 文を一度に実行します。
説明このパラメーターは、Data Development 環境でのテスト実行にのみ適用されます。
ENABLE_SPARKSQL_JDBC
SQL コードの提出方法を指定します。有効値:
true:JDBC(Java Database Connectivity)を使用して SQL コードを提出します。EMR クラスターに Kyuubi サービスがない場合、SQL コードは Spark Thrift-Server に提出されます。EMR クラスターに Kyuubi サービスがある場合、SQL コードは JDBC を使用して Kyuubi に提出されます。このモードでは、カスタム Spark パラメーターをサポートします。どちらの方法でもメタデータおよびデータリネージがサポートされますが、Thrift-Server にジョブを提出する場合、対応するノードの出力情報はメタデータに含まれません。
false(デフォルト):spark-submit clusterモードを使用して SQL コードを提出します。このモードでは、Spark 2 および Spark 3 の両方でメタデータ、データリネージ、および出力情報がサポートされます。また、Spark パラメーターをカスタマイズできます。説明デフォルトでは、
spark-submit clusterモードは、EMR クラスターの HDFS の/tmpディレクトリに一時ファイルおよび一時ディレクトリを作成します。このディレクトリに対する読み取りおよび書き込み権限が必要です。spark-submit cluster モードを使用する場合、詳細設定セクションでカスタム SparkConf パラメーターを追加できます。DataWorks は、コード提出時にこれらのパラメーターを自動的にコマンドに追加します。たとえば、
"spark.driver.memory" : "2g"のように指定します。
DATAWORKS_SESSION_DISABLE
Data Development 環境でのテスト実行における JDBC 接続動作を指定します。有効値:
true:各 SQL 文の実行ごとに新しい JDBC 接続を作成します。false(デフォルト):単一ノード内で異なる SQL 文を実行する際に、同じ JDBC 接続を再利用します。
説明このパラメーターを
falseに設定した場合、Hive のyarn applicationIdがログに出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定してください。その他
カスタム Spark 構成 パラメーターです。Spark 固有のプロパティを追加できます。
以下の形式を使用します:
spark.eventLog.enabled : false。DataWorks は、これらのパラメーターを--conf key=value形式で、EMR クラスターに提出されるコードに自動的に追加します。パラメーター構成の詳細については、「グローバル Spark パラメーターの構成」をご参照ください。説明DataWorks では、ワークスペースレベルでグローバル Spark パラメーターを設定できます。これらのパラメーターは、すべての DataWorks モジュールに適用されます。これらのグローバルパラメーターがモジュール固有の Spark パラメーターよりも優先されるかどうかを指定できます。
Ranger 権限制御を有効化するには、Spark パラメーター セクションに spark.hadoop.fs.oss.authorization.method=ranger 構成を追加して、権限制御が有効になるようにしてください。
EMR サーバーレス Spark
関連パラメーターの設定方法については、「Spark ジョブ提出のためのパラメーター設定」をご参照ください。
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効値:
true:複数の SQL 文を一度に実行します。false(デフォルト):1 つの SQL 文を一度に実行します。
説明このパラメーターは、Data Development 環境でのテスト実行にのみ適用されます。
DATAWORKS_SESSION_DISABLE
ジョブ提出方法を指定します。Data Development でジョブを実行する場合、デフォルトではジョブは SQL Compute に提出されます。このパラメーターを使用して、ジョブを SQL Compute またはリソースキューのいずれかに提出するかを指定できます。
true:ジョブはリソースキューに提出されます。デフォルトでは、計算リソースのバインド時に指定されたデフォルトキューが使用されます。DATAWORKS_SESSION_DISABLE をtrueに設定した場合、開発および実行時のジョブ提出キューを指定するためにSERVERLESS_QUEUE_NAMEパラメーターも構成できます。false(デフォルト):ジョブは SQL Compute に提出されます。説明このパラメーターは、Data Development でジョブを実行する場合にのみ有効です。スケジュール実行では無効です。
SERVERLESS_RELEASE_VERSION
Spark エンジンのバージョンを指定します。デフォルトでは、デフォルトエンジンバージョン が、計算エンジン セクションの 管理センター でクラスターに対して構成されたものが使用されます。このパラメーターを使用すると、特定のジョブに対して異なるエンジンバージョンを指定できます。
説明詳細設定内の
SERVERLESS_RELEASE_VERSIONパラメーターは、登録済みクラスターに対して指定された SQL Compute(セッション)が EMR サーバーレス Spark コンソールで起動されていない場合にのみ有効です。SERVERLESS_QUEUE_NAME
ジョブ提出のためのリソースキューを指定します。デフォルトでは、ジョブは デフォルトリソースキュー に送信されます。これは、クラスターマネジメント セクションの 管理センター でクラスターに対して構成されたものです。リソースの隔離および管理が必要な場合は、キューを追加し、このパラメーターを使用して別のキューを選択できます。詳細については、「リソースキューの管理」をご参照ください。
構成方法:
ノードパラメーターを設定して、ジョブ提出のためのリソースキューを指定します。
グローバル Spark パラメーターの構成 を使用して、ジョブ提出のためのリソースキューを指定します。
説明詳細設定内の
SERVERLESS_QUEUE_NAMEパラメーターは、登録済みクラスターに対して指定された SQL Compute(セッション)が EMR サーバーレス Spark コンソールで起動されていない場合にのみ有効です。Data Development でのジョブ実行時:ジョブをキューに提出するには、
DATAWORKS_SESSION_DISABLEをtrueに設定する必要があります。SERVERLESS_QUEUE_NAMEパラメーターは、このシナリオでのみ有効です。オペレーションセンターからのスケジュールジョブ実行時:ジョブは常にキューに提出され、SQL Compute には提出できません。
SERVERLESS_SQL_COMPUTE
SQL Compute(SQL セッション)を指定します。デフォルトでは、デフォルト SQL Compute インスタンス が、計算エンジン セクションの 管理センター でクラスターに対して構成されたものが使用されます。異なるジョブに対して異なる SQL セッションを設定する必要がある場合は、このパラメーターを構成できます。SQL セッションの作成および管理方法については、「SQL セッションの管理」をご参照ください。
その他
カスタム Spark 構成 パラメーターです。Spark 固有のプロパティを追加できます。
以下の形式を使用します:
spark.eventLog.enabled : false。DataWorks は、これらのパラメーターを--conf key=value形式で、EMR クラスターに提出されるコードに自動的に追加します。説明DataWorks では、ワークスペースレベルでグローバル Spark パラメーターを設定できます。これらのパラメーターは、すべての DataWorks モジュールに適用されます。これらのグローバルパラメーターがモジュール固有の Spark パラメーターよりも優先されるかどうかを指定できます。グローバル Spark パラメーターの設定方法については、「グローバル Spark パラメーターの構成」をご参照ください。
ACK 上の EMR Spark
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効値:
true:複数の SQL 文を一度に実行します。false(デフォルト):1 つの SQL 文を一度に実行します。
説明このパラメーターは、Data Development 環境でのテスト実行にのみ適用されます。
その他
カスタム Spark 構成 パラメーターです。Spark 固有のプロパティを追加できます。
以下の形式を使用します:
spark.eventLog.enabled : false。DataWorks は、これらのパラメーターを--conf key=value形式で、EMR クラスターに提出されるコードに自動的に追加します。説明DataWorks では、ワークスペースレベルでグローバル Spark パラメーターを設定できます。これらのパラメーターは、すべての DataWorks モジュールに適用されます。これらのグローバルパラメーターがモジュール固有の Spark パラメーターよりも優先されるかどうかを指定できます。グローバル Spark パラメーターの設定方法については、「グローバル Spark パラメーターの構成」をご参照ください。
EMR on ECS Hadoop
パラメーター
説明
queue
ジョブ提出のためのスケジューリングキューです。デフォルトのキューは
defaultです。EMR YARN の詳細については、「基本キュー構成」をご参照ください。priority
ジョブの優先度です。デフォルト値は 1 です。
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効値:
true:複数の SQL 文を一度に実行します。false(デフォルト):1 つの SQL 文を一度に実行します。
説明このパラメーターは、Data Development 環境でのテスト実行にのみ適用されます。
USE_GATEWAY
このノードのジョブをゲートウェイクラスターを経由して提出するかどうかを指定します。有効値:
true:ジョブをゲートウェイクラスターを経由して提出します。false(デフォルト):ジョブをヘッダーノードに提出し、ゲートウェイクラスターを経由しません。
説明このパラメーターを
trueに設定したにもかかわらず、クラスターがゲートウェイクラスターと関連付けられていない場合、EMR ジョブの提出は失敗します。その他
カスタム Spark 構成 パラメーターです。Spark 固有のプロパティを追加できます。
以下の形式を使用します:
spark.eventLog.enabled : false。DataWorks は、これらのパラメーターを--conf key=value形式で、EMR クラスターに提出されるコードに自動的に追加します。パラメーター構成の詳細については、「グローバル Spark パラメーターの構成」をご参照ください。説明DataWorks では、ワークスペースレベルでグローバル Spark パラメーターを設定できます。これらのパラメーターは、すべての DataWorks モジュールに適用されます。これらのグローバルパラメーターがモジュール固有の Spark パラメーターよりも優先されるかどうかを指定できます。
Ranger 権限制御を有効化するには、Spark パラメーター セクションに spark.hadoop.fs.oss.authorization.method=ranger 構成を追加して、権限制御が有効になるようにしてください。
SQL ジョブの実行
Run Configuration計算エンジン および リソースグループ を構成します。
説明ジョブのリソース要件に応じて、スケジューリング CU も構成できます。デフォルト値は
0.25です。パブリックネットワークまたは VPC 内のデータソースにアクセスするには、データソースと接続性を確立済みのスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーのパラメーターダイアログボックスで適切なデータソースを選択し、実行 をクリックして SQL ジョブを実行します。
タスクを定期的に実行するには、ビジネス要件に応じてスケジュールを構成します。構成方法については、「ノードのスケジュール構成」をご参照ください。
説明コンポーネント環境をカスタマイズするには、公式イメージに基づいてカスタム
dataworks_emr_base_task_podを作成し、「カスタムイメージ」および「Data Development でのイメージの使用」を参照してください。たとえば、カスタムイメージを作成する際に、Spark JAR パッケージを置き換えたり、特定の
libraries、files、またはjar packagesへの依存関係を追加できます。タスクの構成後、ノードをデプロイする必要があります。詳細については、「ノードおよびワークフローのデプロイメント」をご参照ください。
タスクがデプロイされた後、オペレーションセンターでそのステータスを確認できます。詳細については、「オペレーションセンターの使い始め」をご参照ください。
よくある質問
Data Development で EMR Spark SQL タスクを実行し、ジョブを SQL Compute に提出する場合、SQL Compute インスタンスが 実行中 の状態であることを確認してください。そうでない場合、ジョブは失敗します。SQL Compute インスタンスのステータスを確認するには、「SQL セッションの管理」をご参照ください。