ClickHouse SQL は、分散 SQL クエリを実行し、構造化データを処理して、ジョブの実行効率を向上させます。DataWorks では、ClickHouse SQL ノードを使用して、ClickHouse SQL タスクを開発し、定期的にスケジュールし、他のジョブと統合することができます。このトピックでは、ClickHouse SQL ノードを使用してタスクを開発する方法について説明します。
前提条件
E-MapReduce (EMR) は、DataLake クラスターと Hadoop クラスターを提供します。必要な準備はクラスターのタイプによって異なります。EMR と DataWorks に必要な準備を完了する必要があります。
DataLake: 詳細については、「DataLake クラスターを構成する」および「DataWorks を構成する」をご参照ください。
Hadoop: 詳細については、「Hadoop クラスター開発の準備」をご参照ください。
ClickHouse データソースが作成され、ワークスペースにアタッチされています。
開発のために ClickHouse データにアクセスするには、DataWorks で ClickHouse データソースを作成し、DataStudio にアタッチする必要があります。詳細については、「ClickHouse 計算リソースをアタッチする」をご参照ください。
ClickHouse SQL ノードが作成されています。詳細については、「スケジューリングワークフローのノードを作成する」をご参照ください。
手順
ClickHouse SQL ノードの構成タブで、次のようにタスクを開発できます。
SQL コードを開発する
SQL エディターで、タスクコードを記述します。コードでは、${variable_name} 形式を使用して変数を定義できます。ノード構成タブの右側にある [スケジューリング構成] セクションで、[スケジューリングパラメーター] フィールドの変数に値を割り当てます。これにより、スケジュールされたタスクの動的なパラメーター渡しが可能になります。スケジューリングパラメーターの詳細については、「スケジューリングパラメーターでサポートされている形式」をご参照ください。次のコードは一例です。
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 タスクを実行する
[デバッグ構成] セクションで、[計算リソース] と [リソースグループ] を構成します。
計算リソースを、DataWorks に登録した CDH クラスターの名前に設定します。
リソースグループを、データソースに接続されているスケジューリングリソースグループに設定します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーで、[データソースの選択] ドロップダウンリストをクリックします。表示されるダイアログボックスで、作成した ClickHouse データソースを選択し、[実行] をクリックして SQL タスクを実行します。
ノードタスクを定期的に実行するには、そのスケジューリングプロパティを設定します。詳細については、「ノードスケジューリングを構成する」をご参照ください。
ノードタスクを設定した後、ノードを公開する必要があります。詳細については、「ノードとワークフローを公開する」をご参照ください。
タスクが公開された後、オペレーションセンターで定期タスクの実行ステータスを表示できます。詳細については、「オペレーションセンターの概要」をご参照ください。