Impala は、ペタバイト規模のデータに対してリアルタイムで高速なインタラクティブクエリを実行するための SQL クエリエンジンです。このトピックでは、データ開発のために DataWorks で EMR Impala ノードを作成および設定する方法について説明します。
前提条件
Alibaba Cloud E-MapReduce (EMR) クラスターを作成し、DataWorks に登録済みであること。詳細については、「Data Studio: EMR 計算リソースの関連付け」をご参照ください。
(オプション、RAM ユーザーに必須) タスク開発を担当する Resource Access Management (RAM) ユーザーをワークスペースに追加し、[開発者] または [ワークスペース管理者] のロールを割り当てていること。[ワークスペース管理者] ロールには広範な権限が付与されるため、慎重に割り当ててください。メンバーの追加に関する詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
Alibaba Cloud アカウントをご利用の場合は、このステップをスキップできます。
DataWorks で Hive データソースを設定し、接続テストに合格していること。詳細については、「データソース管理」をご参照ください。
制限事項
このノードタイプは、Serverless リソースグループ (推奨) または専用スケジューリングリソースグループでのみ実行されます。
EMR Impala は、レガシーデータレイククラスター (Hadoop) の計算リソースタイプでのみ実行されます。DataWorks は新しい Hadoop タイプのクラスターのバインドをサポートしなくなりましたが、既存のクラスターは引き続き使用できます。
操作手順
EMR Impala ノードの設定ページで、次の手順を実行します。
SQL コードの開発
エディターで SQL コードを記述します。`${variable_name}` 形式で変数を定義し、スケジューリング設定ペインのスケジューリングパラメーターで値を割り当てることができます。これにより、スケジュール実行中にコードにパラメーターを動的に渡すことができます。スケジューリングパラメーターの使用方法に関する詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。次のコードは一例です。
SHOW TABLES ; CREATE TABLE IF NOT EXISTS userinfo ( ip STRING COMMENT'IP アドレス', uid STRING COMMENT'ユーザー ID' )PARTITIONED BY( dt STRING ); ALTER TABLE userinfo ADD IF NOT EXISTS PARTITION(dt='${bizdate}'); -- スケジューリングパラメーターと組み合わせて使用できます。 SELECT * FROM userinfo ;説明単一の SQL 文は 130 KB を超えることはできません。
オプション:詳細パラメーターの設定
右側の [スケジューリング設定] ペインの セクションで、次のプロパティを設定できます。
説明利用可能な詳細パラメーターは、次の表に示すように EMR クラスターのタイプによって異なります。
その他の オープンソースの Spark プロパティ は、[スケジューリング設定] > ペインで設定します。
DataLake/カスタムクラスター
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モードを設定します。有効な値:
true:複数の SQL 文を一度に実行します。false(デフォルト):SQL 文を一度に 1 つずつ実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
DATAWORKS_SESSION_DISABLE
開発環境での直接テスト実行用です。有効な値:
true:SQL 文を実行するたびに新しい JDBC 接続を作成します。false(デフォルト):ノード内で異なる SQL 文を実行する際に、同じ JDBC 接続を再利用します。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdがログに出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。priority
優先度。デフォルト:1。
queue
ジョブがサブミットされる YARN キュー。デフォルトのキューは `default` です。EMR の YARN に関する詳細については、「基本的なキュー設定」をご参照ください。
Hadoop クラスター
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行モードを設定します。有効な値:
true:複数の SQL 文を一度に実行します。false(デフォルト):SQL 文を一度に 1 つずつ実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
USE_GATEWAY
ゲートウェイクラスター経由でジョブをサブミットするかどうかを指定します。有効な値:
true:ゲートウェイクラスター経由でジョブをサブミットします。false(デフォルト):ヘッダーノードに直接ジョブをサブミットします。
説明このパラメーターを
trueに設定しても、クラスターがゲートウェイクラスターに関連付けられていない場合、EMR ジョブのサブミットは失敗します。SQL タスクの実行
Run Configuration の [計算リソース] セクションで、[計算リソース] と [リソースグループ] を選択します。
説明タスクが必要とするリソースに応じて [スケジューリング CU] を調整することもできます。デフォルト:
0.25CU。パブリックネットワークまたは VPC 経由でデータソースにアクセスするには、それに接続できるスケジューリングリソースグループを使用します。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーのパラメーターダイアログで、Hive データソースを選択し、[実行] をクリックします。
説明EMR Impala ノードで実行されるクエリは、最大 10,000 行を返すことができ、合計データサイズの制限は 10 MB です。
[保存] をクリックしてノードを保存します。
タスクをスケジューリングするには、必要に応じてそのプロパティを設定します。詳細については、「ノードのスケジューリング設定」をご参照ください。
ノードを設定した後、それをデプロイする必要があります。詳細については、「ノードとワークフローのデプロイ」をご参照ください。
タスクをデプロイした後、オペレーションセンターでそのスケジュール実行をモニターできます。詳細については、「オペレーションセンター入門」をご参照ください。
よくある質問
Q:「Impala JDBC Url is Empty」というエラーが表示されるのはなぜですか?

A:このエラーは、EMR クラスターで Impala サービスが有効になっていない場合に発生します。Impala サービスは、レガシーデータレイククラスター (Hadoop) でのみサポートされていることにご注意ください。
Q:接続タイムアウトエラーでノードが失敗するのはなぜですか?

A:リソースグループとクラスター間のネットワーク接続を確認してください。計算リソースページに移動し、リソースを見つけて [リソースの初期化] をクリックします。表示されるダイアログボックスで [再初期化] をクリックし、初期化が成功することを確認します。

