To English Readers : Thank you to reach here! English Translation is available.
See Presto: kill Query.
はじめに
Prestoはwatsonx.dataに組み込まれているオープンソースのクエリーエンジンで、高速で信頼性が高く効率よくデータを処理します。
Prestoエンジンのシステム・コネクター(System Connector)は、オープンソースのPrestoで実装され、Prestoクラスターで実行されている照会の情報とメトリックを提供します。 プロシージャーとしてkill_query (system.runtime.kill_query)が含まれています。
ここではPrestoエンジンのシステム・コネクターのプロシージャーkill_query実行例をwatsonx.data 2.1.2を使用してご紹介します。
Presto システム・コネクター
Prestoのシステム・コネクターは、オープンソースのPrestoで実装されていて、Prestoクラスターで実行されている情報とメトリックを提供します。 watsonx.dataでPrestoエンジンを追加すると、システム・コネクターはカタログ'system'として自動的に構成されています。
kill_query の実行例
Presto システム・コネクターには QueryをKill するkill_queryプロシージャーが含まれています。
使用方法と実行例を紹介します。
Syntax
kill_queryは2つの引数を指定します。
- query_id : killする照会のquery_id(必須)
- message : 照会が強制的終了させられる理由を説明するメッセージを提供することができる。(オプション)
runtime.kill_query(query_id, message)
実行例1 presto-cliを使用した例
この例では、2つのpresto-cliターミナル(端末1と端末2)を使用します。
(1) 端末1で時間がかかる照会を実行します。
presto:hsf100_no_part> select xxxxxxxxxx;
Query 20250428_084814_00195_3pgtu [RUNNING] i[15M 32.9M 11.4M] o[15M 32.9M 11.4M] splits[444/26/25]
(2) killしたい照会の特定:system.runtime.queriesなどを使用して killしたい照会のquery_idを特定します。
- presto-cliを使用している場合は、query_idが表示されています。
(1) 端末1の場合 "Query 20250428_084814_00195_3pgtu"というメッセージからquery_idは20250428_084814_00195_3pgtuであることがわかります。
(3) 端末2 kill_queryを実行します。第1引数にquery_id:'20250428_084814_00195_3pgtu'、第2引数にメッセージ'kill by cpadmin'を指定してsystem.runtime.kill_queryを実行します。
presto> CALL system.runtime.kill_query('20250428_084814_00195_3pgtu','kill by cpadmin');
CALL
presto>
(4) 端末1では時間がかかっていた照会が次のように強制終了されます。
Query 20250428_084814_00195_3pgtu, FAILED, 3 nodes
Splits: 516 total, 326 done (63.18%)
[Latency: client-side: 0:10, server-side: 0:09] [165M rows, 1.13GB] [18.2M rows/s, 127MB/s]
Query 20250428_084814_00195_3pgtu failed: Query killed. Message: kill by cpadmin
presto:hsf100_no_part>
エラーメッセージに kill by cpadminが含まれています。
実行例2 Presto Consoleを使用した例
(1) Presto Consoleを開きます。 CLUSTER OVERVIEW画面が表示されます。

- (watsonx.dataでのヒント) Presto Console へのURLは、インフラストラクチャー・マネージャー のエンジンの詳細画面で入手できます。Prestoエンジンをクリックして詳細の中のホスト名(外部ホストが表示される場合は外部ホスト)がPresto ConsoleへのURLです。
(2) CLUSTER OVERVIEW で Kill したいQueryを特定してクリックします。

(3) QUERY DETAILS画面が開きます。その中に"Kill" ボタンがあります。

(4) Kill ボタンを押すと USER ERRORでQuery は終了します。

下のほうにあるError Information には 次のような情報が表示されています。

エラーメッセージには Killed via web UI が含まれています。
Error Information
Error Type USER_ERROR
Error Code ADMINISTRATIVELY_KILLED (38)
Stack Trace
com.facebook.presto.spi.PrestoException: Query killed. Message: Killed via web UI
at com.facebook.presto.connector.system.KillQueryProcedure.createKillQueryException(KillQueryProcedure.java:92)
(5) Presto CLIで実行していたQuery がkill された場合は 次のようにエラーが表示されました。
presto> select xxxx ;
Query 20250428_091258_00199_3pgtu, FAILED, 4 nodes
Splits: 8 total, 4 done (50.00%)
[Latency: client-side: 0:24, server-side: 0:22] [7 rows, 433KB] [0 rows/s, 19.5KB/s]
Query 20250428_091258_00199_3pgtu failed: Query killed. Message: Killed via web UI
presto>
環境
- OCP Version : 4.16
- CP4D 5.1.2
- watsonx.data 2.1.2
- 構成済みのPresto エンジンについて
- P01(Presto Java)
- タイプ : Presto (Java) v0.286
- サイズ : スターター
- コーディネーター・ノード : 1
- ワーカー・ノード : 0
- PCpp (Presto(C++))
- タイプ : Presto (C++) v0.286
- サイズ : スターター
- コーディネーター・ノード : 1
- ワーカー・ノード : 3
- P01(Presto Java)
次は今回使用したwatsonx.dataのWeb Consoleのインフラストラクチャー・マネージャーのイメージです。

まとめ
Prestoエンジンのシステム・コネクターのプロシージャーkill_queryの実行例をwatsonx.data 2.1.2を使用してご紹介しました。