Spark SQL ノードを使用すると、分散 SQL クエリエンジンを使用して構造化データを処理できます。これにより、ジョブの実行効率が向上します。DataWorks は、CDH Spark SQL タスクを開発し、定期的にスケジュールし、他の種類のタスクと統合するために使用できる CDH Spark SQL ノードを提供します。このトピックでは、CDH Spark SQL ノードを作成して使用する方法について説明します。
前提条件
-
DataStudio でワークフローが作成されていること。
DataStudio では、開発タスクはワークフローに整理されます。ノードを作成する前に、ワークフローを作成する必要があります。詳細については、「ワークフローの作成」をご参照ください。
-
CDH クラスターが作成され、ご利用の DataWorks ワークスペースに登録されていること。
CDH ノードとタスクを作成する前に、CDH クラスターを DataWorks ワークスペースに登録する必要があります。詳細については、「旧バージョンの DataStudio で CDH 計算リソースをバインドする」をご参照ください。
-
サーバーレスリソースグループが購入され、設定されていること。設定には、ワークスペースとの関連付けやネットワーク設定が含まれます。詳細については、「サーバーレスリソースグループの作成と使用」をご参照ください。
制限事項
CDH Spark SQL ノード上のタスクは、サーバーレスリソースグループまたは旧バージョンの専用スケジューリングリソースグループで実行できます。タスクはサーバーレスリソースグループで実行することを推奨します。
ステップ 1:CDH Spark SQL ノードの作成
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウで をクリックします。ドロップダウンリストからワークスペースを選択し、入力 データ開発 をクリックします。
-
対象のワークフローを右クリックし、 を選択します。
-
Create Node ダイアログボックスで、ノードの Name を入力し、OK をクリックします。ノードエディターが開き、タスクを開発および設定できます。
ステップ 2:CDH Spark SQL タスクの開発
(オプション) CDH クラスターの選択
複数の Cloudera's Distribution including Apache Hadoop (CDH) クラスターが現在のワークスペースに登録されている場合は、ビジネス要件に基づいて [エンジンインスタンス CDH] ドロップダウンリストからクラスターを選択する必要があります。CDH クラスターが 1 つだけ登録されている場合は、その CDH クラスターが開発に自動的に使用されます。
[CDH エンジンインスタンス] ドロップダウンリストから、対象のクラスターを選択します。IP アドレスホワイトリストを持つドメインにアクセスする必要がある場合は、専用スケジューリングリソースグループを使用してください。
SQL コードの開発
SQL コードの開発:簡単な例
CDH Spark SQL ノードの設定タブにあるコードエディターで、タスクコードを記述します。
この例では、test_spark データベースに test_lineage_table_f1 テーブルと test_lineage_table_t2 テーブルを作成し、test_lineage_table_f1 テーブルから test_lineage_table_t2 テーブルにデータをコピーできます。サンプルコード:
この例は参考用です。ビジネス要件に基づいてコードを記述してください。
CREATE TABLE IF NOT EXISTS test_spark.test_lineage_table_f1 (`id` BIGINT, `name` STRING)
PARTITIONED BY (`ds` STRING);
CREATE TABLE IF NOT EXISTS test_spark.test_lineage_table_t2 AS SELECT * FROM test_spark.test_lineage_table_f1;
INSERT into test_spark.test_lineage_table_t2 SELECT * FROM test_spark.test_lineage_table_f1;
SQL コードの開発:スケジューリングパラメーターの使用
DataWorks は、定期タスクのコード内の変数に動的に値を渡すことができる Scheduling Parameter を提供します。タスクコード内で ${variable_name} 形式を使用して変数を定義できます。ノードエディターページの右側のナビゲーションウィンドウで、Scheduling Settings > Scheduling Parameter に移動して、変数に値を割り当てます。サポートされているフォーマットと設定の詳細については、「サポートされているスケジューリングパラメーターのフォーマット」および「スケジューリングパラメーターの設定と使用」をご参照ください。
サンプルコード:
SELECT '${var}'; -- var 変数に特定のスケジューリングパラメーターを割り当てることができます。
(オプション) 詳細パラメーターの設定
CDH Spark SQL ノードエディターページで、右側のナビゲーションウィンドウにある Advanced Settings をクリックして、タスクの実行時パラメーターを設定します。例:
-
"spark.driver.memory": "2g":Spark ドライバーノードに割り当てられるメモリサイズを指定します。 -
"spark.yarn.queue": "haha":アプリケーションが送信される Yarn のキューを指定します。
詳細パラメーターの設定方法については、「Spark Configuration」をご参照ください。
ステップ 3:タスクスケジューリングの設定
ノードタスクを定期的に実行するには、ノード編集ページの右側にある Scheduling をクリックし、ニーズに基づいてスケジューリング設定を行います。詳細については、「タスクスケジューリングプロパティの概要」をご参照ください。
ノードを送信する前に、ノードの Rerun attribute と Parent Nodes を設定する必要があります。
ステップ 4:タスクコードのテスト
必要に応じて以下のテスト操作を実行し、タスクが期待どおりに動作することを確認します。
-
(オプション) リソースグループを選択し、カスタムパラメーター値を割り当てます。
-
ツールバーの
アイコンをクリックします。Parameter ダイアログボックスで、テスト用のスケジューリングリソースグループを選択します。 -
タスクコードがスケジューリングパラメーター変数を使用している場合は、ここでテスト用の値を割り当てます。パラメーター割り当てのロジックの詳細については、「タスクのデバッグプロセス」をご参照ください。
-
-
タスクコードを保存して実行します。
ツールバーの
アイコンをクリックしてタスクコードを保存します。次に、
アイコンをクリックしてタスクを実行します。 -
(オプション) スモークテストを実行します。
開発環境でスモークテストを実行し、スケジュールされたノードタスクが期待どおりに実行されることを確認するには、ノードの送信中または送信後にスモークテストを実行します。詳細については、「スモークテストの実行」をご参照ください。
ステップ 5:タスクの送信と公開
ノードタスクを設定した後、送信して公開します。公開されると、ノードはそのスケジューリング設定に基づいて定期的に実行されます。
-
ツールバーの
アイコンをクリックしてノードを保存します。 -
ツールバーの
アイコンをクリックしてノードタスクを送信します。Submission ダイアログボックスで、Change Description を入力します。オプションで、送信後にコードレビューを要求するかどうかを選択します。
説明-
ノードを送信する前に、ノードの Rerun attribute と Parent Nodes を設定する必要があります。
-
コードレビューは、コードの品質を確保し、未レビューのコードが直接本番環境に公開されることによるエラーを防ぐのに役立ちます。コードレビューが有効になっている場合、送信されたノードコードは、公開される前にレビュー担当者によって承認される必要があります。詳細については、「コードレビュー」をご参照ください。
-
標準モードのワークスペースを使用している場合、タスクの送信に成功したら、ノード編集ページの右上隅にある [公開] をクリックして、タスクを本番環境にデプロイします。詳細については、「タスクの公開」をご参照ください。
次のステップ
-
タスクの O&M:タスクが送信され公開されると、ノードの設定に基づいて定期的に実行されます。ノード編集ページの右上隅にある O&M をクリックしてオペレーションセンターに移動し、定期タスクのスケジューリングと実行ステータスを表示できます。詳細については、「定期タスクの管理」をご参照ください。
-
リネージの表示:タスクをコミットしてデプロイした後、Data Map ページでタスクのリネージを表示できます。たとえば、元のデータのソースやテーブルデータが流れるデータベースを表示できます。その後、ビジネス要件に基づいてさまざまなレベルのリネージの影響を分析できます。詳細については、「リネージの表示」をご参照ください。