Serverless Spark SQL ノードは、EMR Serverless Spark 計算リソース上で動作する分散 SQL クエリエンジンを提供します。このノードを使用して、構造化データを処理し、ジョブ実行効率を向上させることができます。
前提条件
計算リソース要件: EMR Serverless Spark 計算リソースのみを使用できます。リソースグループと計算リソース間のネットワーク接続が確保されていることを確認してください。
リソースグループ: このタイプのタスクを実行するには、Serverless リソースグループのみを使用できます。
(オプション) リソースアクセス管理 (RAM) ユーザーの場合、タスク開発用のワークスペースに追加され、[デベロッパー] または [ワークスペース管理者] のロールが割り当てられていることを確認してください。ワークスペース管理者ロールには広範な権限があります。このロールは注意して付与してください。メンバーの追加について詳しくは、「ワークスペースへのメンバーの追加」をご参照ください。
Alibaba Cloud アカウントを使用する場合は、この手順をスキップできます。
ノードの作成
詳細については、「ノードの作成」をご参照ください。
ノードの開発
エディターで SQL コードを記述します。catalog.database.tablename の構文がサポートされています。catalog を省略すると、クラスターのデフォルトカタログが使用されます。catalog.database を省略すると、デフォルトカタログのデフォルトデータベースが使用されます。
カタログの詳細については、「EMR Serverless Spark でデータカタログを管理する」をご参照ください。
-- <catalog.database.tablename> を実際の値に置き換えます
SELECT * FROM <catalog.database.tablename> コード内で変数を${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
); --これはスケジューリングパラメーターで使用できます。SQL ステートメントの最大サイズは 130 KB です。
ノードのデバッグ
「Run Configuration」ペインで、[コンピューティングリソース] および [リソースグループ] を選択します。
パラメーター
説明
計算リソース
バインドされた EMR Serverless Spark 計算リソースを選択します。利用可能な計算リソースがない場合は、ドロップダウンリストから [Create Compute Resource] を選択します。
リソースグループ
ワークスペースにバインドされているリソースグループを選択します。
スクリプトパラメーター
ノードのコンテンツで
${parameter_name}形式を使用して変数を定義する場合、[パラメーター名] および [パラメーター値] を [スクリプトパラメーター] セクションで指定する必要があります。これらの変数は、実行時に実際の値に動的に置き換えられます。詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。Serverless Spark ノードパラメーター
Spark アプリケーションの実行時パラメーター。以下のタイプがサポートされています。
DataWorks のカスタム実行時パラメーター。詳細については、「付録: DataWorks パラメーター」をご参照ください。
ネイティブ Spark プロパティ。詳細については、「オープンソース Spark プロパティ」をご参照ください。手動入力なしで EMR Serverless Spark から Spark 構成テンプレートを直接ロードできます。これにより、構成が簡素化され、一貫性が確保されます。
ノードエディターの上部にあるツールバーで、[実行] をクリックして SQL タスクを実行します。
重要ノードをデプロイする前に、Run Configuration を [ランタイム設定] ペインから [サーバーレス Spark ノードパラメーター] セクション([スケジューリング設定] ペイン内)にコピーする必要があります。
次のステップ
ノードのスケジュール設定: プロジェクトフォルダ内のノードを定期的に実行する必要がある場合、[スケジューリングポリシー] を設定し、ノードページの右側にある [スケジューリング] セクションでスケジューリングプロパティを設定できます。
ノードの公開: タスクを本番環境で実行する必要がある場合は、
アイコンをクリックしてタスクを公開します。プロジェクトフォルダー内のノードは、本番環境に公開された後にのみスケジュールに従って実行されます。ノード O&M: タスクを公開した後、オペレーションセンターで定期タスクのステータスを表示できます。詳細については、「オペレーションセンターの概要」をご参照ください。
付録: DataWorks パラメーター
パラメーター | 説明 |
FLOW_SKIP_SQL_ANALYZE | SQL ステートメント実行方法。有効な値:
説明 このパラメーターは、Data Studio 環境でのテスト実行のみを対象としています。 |
DATAWORKS_SESSION_DISABLE | ジョブ送信方法。Data Studio でタスクを実行すると、デフォルトで SQL コンピュートに送信されます。このパラメーターを使用して、タスクを SQL コンピュートで実行するか、キューに送信するかを指定できます。
|
SERVERLESS_RELEASE_VERSION | Spark エンジンのバージョンです。デフォルトでは、タスクは、[管理センター] の [コンピューティングリソース] でクラスターに設定された [デフォルト エンジン バージョン] を使用します。このパラメーターを設定することで、特定のタスクに対して異なるエンジン バージョンを指定できます。 説明 詳細設定の |
SERVERLESS_QUEUE_NAME | ジョブの送信先リソースキューを指定します。ジョブをキューに送信すると、デフォルトでは、[管理センター] の [クラスター管理] でクラスターに対して設定された [デフォルト リソースキュー] を使用します。リソースの隔離と管理を実装するために、キューを追加できます。詳細については、「リソースキューの管理」をご参照ください。 構成方法:
説明
|
SERVERLESS_SQL_COMPUTE | SQL Compute(SQL セッション)を指定します。デフォルトでは、タスクは、[デフォルトの SQL Compute] を使用します。これは、[コンピューティングリソース] でクラスターに設定された [管理センター] のものです。このパラメーターを設定することで、特定のタスクに対して異なる SQL セッションを指定できます。SQL セッションの作成および管理については、「SQL セッションの管理」をご参照ください。 |
その他 | カスタム Spark 構成パラメーター。Spark 固有のプロパティを追加できます。 形式: 説明 DataWorks では、異なる DataWorks モジュールに対してワークスペースレベルでグローバル Spark パラメーターを設定できます。これらのグローバルパラメーターが特定のモジュール内のパラメーターをオーバーライドするかどうかを指定できます。グローバル Spark パラメーターの設定方法の詳細については、「グローバル Spark パラメーターを設定」をご参照ください。 |