Impala は、ペタバイト規模のデータに対して、高速、リアルタイム、インタラクティブなクエリを実行する SQL クエリエンジンです。このトピックでは、データ開発のために DataWorks で EMR Impala ノードを作成する方法について説明します。
前提条件
Alibaba Cloud EMR クラスターを作成し、DataWorks にバインドしていること。詳細については、「Data Studio (新バージョン): EMR 計算リソースのバインド」をご参照ください。
(任意) Resource Access Management (RAM) ユーザーである場合は、タスク開発用のワークスペースに追加され、[Developer] または [Workspace Administrator] ロールが割り当てられていることを確認してください。Workspace Administrator ロールには広範な権限があります。このロールは慎重に付与してください。メンバーの追加に関する詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
DataWorks で Hive データソースを構成し、その接続性を確認していること。詳細については、「データソース管理」をご参照ください。
制限事項
このタイプのノードは、サーバーレスリソースグループ (推奨) またはスケジューリング用の専用リソースグループでのみ実行できます。
EMR Impala ノードは、レガシー Data Lake (Hadoop) クラスタータイプの計算リソースでのみ実行できます。DataWorks は、新しい Hadoop タイプのクラスターのバインドをサポートしなくなりました。ただし、すでにバインドされている Hadoop クラスターは引き続き使用できます。
手順
EMR Impala ノードのエディターページで、次のようにノードを開発できます。
SQL コードの開発
SQL 編集エリアでタスクコードを開発できます。コードでは、${変数名} 形式を使用して変数を定義します。次に、ノード編集ページの右側にある [スケジューリング設定] の [スケジューリングパラメーター] セクションで、各変数に値を割り当てます。これにより、スケジューリングシナリオでコードにパラメーターを動的に渡すことができます。詳細については、「スケジューリングパラメーターでサポートされている形式」をご参照ください。以下に例を示します。
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/Custom クラスター: EMR on ECS
詳細パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文を実行するために使用されるメソッド。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
DATAWORKS_SESSION_DISABLE
このパラメーターは、開発環境でのテスト実行に適用されます。有効な値:
true: SQL 文が実行されるたびに、新しい Java Database Connectivity (JDBC) 接続が作成されます。false(デフォルト): ユーザーがノードで異なる SQL 文を実行するときに、同じ JDBC 接続が再利用されます。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdは出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。priority
優先度。デフォルト値は 1 です。
queue
ジョブが送信されるスケジューリングキュー。デフォルトのキューは default です。EMR YARN の詳細については、「基本的なキュー構成」をご参照ください。
Hadoop クラスター: EMR on ECS
詳細パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文を実行するために使用されるメソッド。有効な値:
true: 一度に複数の SQL 文を実行します。false(デフォルト): 一度に 1 つの SQL 文を実行します。
説明このパラメーターは、開発環境でのテスト実行でのみサポートされます。
USE_GATEWAY
このノードからゲートクラスター経由でジョブを送信するかどうかを指定します。有効な値:
true: ゲートクラスター経由でジョブを送信します。false(デフォルト): ゲートクラスター経由ではなく、ヘッダーノードにジョブを送信します。
説明このノードが存在するクラスターがゲートクラスターに関連付けられておらず、このパラメーターを
trueに設定した場合、後続の EMR ジョブの送信は失敗します。SQL ノードの実行
[テスト設定] の [計算リソース] セクションで、[計算リソース] と [DataWorks リソースグループ] を設定できます。
説明タスク実行のリソース要件に基づいて [CU のスケジューリング] を行うこともできます。デフォルトの CU は
0.25です。パブリックネットワークまたは VPC でデータソースにアクセスするには、データソースの接続性テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
[パラメーター] ダイアログボックスで、Hive データソースを選択し、[実行] をクリックして SQL タスクを実行します。
説明EMR Impala ノードを使用してデータをクエリする場合、最大 10,000 件のデータレコードを返すことができます。合計データサイズは 10 MB を超えることはできません。
[保存] をクリックします。
ノードを定期的に実行するには、必要に応じてスケジューリングプロパティを設定できます。詳細については、「ノードのスケジューリング」をご参照ください。
ノードを設定した後、公開する必要があります。詳細については、「ノードまたはワークフローの公開」をご参照ください。
ノードが公開された後、オペレーションセンターで定期タスクのステータスを表示できます。詳細については、「オペレーションセンターの概要」をご参照ください。
よくある質問
Q: 「Impala JDBC Url is Empty」というエラーが発生するのはなぜですか?

A: クラスターに Impala サービスが追加されていることを確認してください。Impala サービスは既存のユーザーのみが利用できます。
Q: ノードを実行すると接続タイムアウトエラーが発生するのはなぜですか?

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

