Spark SQL は、構造化データを効率的に処理する分散クエリエンジンです。DataWorks では、CDH Spark SQL ノードを使用して、CDH Spark SQL タスクを開発、スケジューリング、統合し、ほかのジョブと連携できます。このトピックでは、CDH Spark SQL ノードの設定方法と使用方法について説明します。
前提条件
-
Alibaba Cloud CDH クラスターを作成し、DataWorks ワークスペースに関連付けていること。詳細については、「CDH コンピュートエンジンの関連付け」をご参照ください。
重要CDH クラスターに Spark コンポーネントをインストールし、クラスターの関連付け時に Spark 関連情報を設定していること。
-
(任意、RAM ユーザーの場合) タスク開発用の RAM ユーザーが対応するワークスペースに追加され、開発者 または ワークスペース管理者 ロールが付与されていること。[ワークスペース管理者] ロールは広範な権限を持つため、慎重に付与してください。メンバーの追加に関する詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
説明Alibaba Cloud アカウント (root ユーザー) を使用している場合は、このステップをスキップできます。
-
DataWorks で Hive データソースを設定し、そのデータソースが接続性テストに合格したことを確認済みであること。詳細については、「データソースの管理」をご参照ください。
ノードの作成
手順については、「ノードの作成」をご参照ください。
ノードの開発
SQL エディターでタスクコードを記述します。コード内では ${variable_name} 形式で変数を定義し、スケジューリング設定 パネルの スケジューリングパラメーター セクションでこれらの変数に値を設定できます。これにより、スケジュール実行時にパラメーターを動的にコードへ渡せます。スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。次のコードに例を示します:
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 id,${var} FROM test_spark.test_lineage_table_f1;
-
この例では、
test_sparkデータベースにtest_lineage_table_f1テーブルとtest_lineage_table_t2テーブルを作成し、test_lineage_table_f1テーブルのデータをtest_lineage_table_t2テーブルにコピーします。この例は参考用です。実際に使用する場合は、ご自身のデータベース環境に置き換えてください。 -
${var}パラメーターは、フィールドnameの値として設定されます。
ノードのデバッグ
-
デバッグの構成 の 計算リソース セクションで、計算リソース と リソースグループ を設定します。
-
[計算リソース] には、DataWorks に登録した CDH クラスターの名前を選択します。
-
[リソースグループ] には、データソースへの接続テストに合格した、スケジューリング用リソースグループを選択します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
-
ノードエディターの上部にあるツールバーで、実行 をクリックします。
次のステップ
ノードスケジューリングを設定する: ノードを定期的に実行する必要がある場合は、右側のスケジューリング設定パネルでスケジューリングポリシーを設定します。
ノードの公開:タスクを本番環境で実行するには、
アイコンをクリックしてノードを公開します。ノードは、本番環境に公開された後にのみスケジュールどおりに実行されます。タスクの O&M:タスクが公開された後、オペレーションセンターで定期的な実行ステータスをモニターできます。詳細については、「オペレーションセンター入門」をご参照ください。