ClickHouse SQL を使用すると、構造化データに対して分散 SQL クエリを実行し、ジョブの効率を向上させることができます。DataWorks では、ClickHouse SQL ノードを使用してタスクを開発し、定期的に実行するようにスケジュールし、他のジョブと統合できます。このトピックでは、ClickHouse SQL ノードを使用してタスクを開発するための主なワークフローについて説明します。
前提条件
-
EMR エンジンタイプには DataLake と Hadoop があります。各エンジンタイプでは、ノードを作成する前に異なる準備が必要です。ご利用のシナリオに基づき、EMR と DataWorks で必要な準備を完了してください。
-
DataLake:詳細については、「DataLake クラスターの設定」および「DataWorks の設定」をご参照ください。
-
Hadoop:詳細については、「開発用の Hadoop クラスターの準備」をご参照ください。
-
-
ClickHouse データソースを作成し、ワークスペースにバインド済みであること。
開発のために ClickHouse からデータにアクセスするには、DataWorks で ClickHouse データソースを作成し、Data Studio にバインドする必要があります。詳細については、「ClickHouse 計算リソースのバインド」をご参照ください。
-
ClickHouse SQL ノードを作成済みであること。詳細については、「スケジュールされたワークフローノードの作成」をご参照ください。
操作手順
-
ClickHouse SQL ノードの編集ページで、次の手順を実行します。
SQL コードの開発
SQL エディターで、タスクコードを記述します。コードでは、${variable_name} フォーマットを使用して変数を定義できます。右側にあるScheduling SettingsペインのScheduling Parametersで、これらの変数に値を割り当てます。これにより、スケジュールされたジョブの実行に対して動的パラメーターの受け渡しが可能になります。スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。例:
CREATE DATABASE IF NOT EXISTS ck_test; CREATE TABLE IF NOT EXISTS ck_test.first_table ( `product_code` String, `package_name` String ) ENGINE = MergeTree ORDER BY package_name SETTINGS index_granularity = 8192; INSERT INTO ck_test.first_table (product_code, package_name) VALUES ('1', ${var}); SELECT * FROM ck_test.first_table;説明この例では、
${var}パラメーターを1に設定できます。SQL タスクの実行
-
Run Configuration ペインで、Compute Resource と Resource Group を設定します。
-
[計算リソース] には、DataWorks に登録した CDH クラスターの名前を選択します。
-
[リソースグループ] には、データソースへの接続が確認されているスケジューリングリソースグループを選択します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
-
ツールバーで、Select a data source ドロップダウンメニューをクリックします。ダイアログボックスで、作成した ClickHouse データソースを選択し、Run をクリックして SQL タスクを実行します。
-
-
ノードを定期的に実行するには、ビジネス要件に基づいてスケジューリングプロパティを設定します。設定の詳細については、「ノードのスケジューリング設定」をご参照ください。
-
ノードを設定した後、デプロイします。詳細については、「ノードとワークフローのデプロイ」をご参照ください。
-
タスクをデプロイした後、オペレーションセンターで実行ステータスを確認します。詳細については、「オペレーションセンター入門」をご参照ください。