Abfrageverlauf exportieren und importieren
Der Presto speichert den Abfrageverlauf in der Tabelle system.runtime.queries
. Aber die system.runtime.queries
wird abgeschnitten, wenn Sie Presto neu starten, was zum Verlust des Abfrageverlaufs führt. Um dieses Problem
zu entschärfen, können Sie den Abfrageverlauf als csv-Datei exportieren und außerdem den Abfrageverlauf aus der Tabelle system.runtime.queries in eine systemfremde Tabelle importieren.
Es wird empfohlen, den Abfrageverlauf regelmäßig zu exportieren, damit er nicht verloren geht.
Um den Abfrageverlauf zu importieren und zu exportieren, müssen Sie die Presto CLI installieren. Weitere Informationen finden Sie unter Verbindung zum Presto herstellen.
Abfrageverlauf exportieren
Führen Sie den folgenden Befehl aus, um den Abfrageverlauf zu exportieren:
export PRESTO_PASSWORD=<your api_key>
./presto --server https://<port:host> --catalog system \
--schemaruntime --execute "select * from queries" \
--user ibmlhapikey --output-format CSV_HEADER > history.csv --password
Dieser Befehl generiert eine CSV-Datei, die den exportierten Abfrageverlauf enthält.
- Beispiel
./presto --server https://8dac613f-ba5b-4c3c-8c96-
ce8de101f7cf.cdc406pd09pasng7elgg.databases.appdomain.cloud:30929 \
--execute "select * from system.runtime.queries" --output-format CSV_HEADER \
--user ibmlhapikey output-format CSV > history.csv --password
Abfrageverlauf importieren
-
Erstellen Sie zum Importieren des Abfrageprotokolls ein Schema in einem Katalog, auf den Sie Schreibzugriff haben.
create schema <non-system-catalog.schema-name> with (location=' s3a://<bucket-name>/<schema-name>')
- Beispiel
./presto --server https://8dac613f-ba5b-4c3c-8c96-\ ce8de101f7cf.cdc406pd09pasng7elgg.databases.appdomain.cloud:30929 \ --execute "create schema hive_data.query_history with \ (location='s3a://8dac613f-ba5b-4c3c-8c96-ce8de101f7cf-customer/query_history')" \ --user ibmlhapikey --password
-
Erstellen Sie eine Tabelle in demselben Katalog.
Diese Tabelle muss dieselben Metadaten wie die Tabelle
system.runtime.queries
haben. Erstellen Sie diese Tabelle mit der AnweisungCREATE TABLE AS SELECT
.create table <non-system-table-name> as select * from system.runtime.queries where 1=0;
where 1=0
bedingung stellt sicher, dass keine Zeilen aus einer Tabelle ausgewählt werden, was zu einer leeren Ergebnismenge führt.- Beispiel
./presto --server https://8dac613f-ba5b-4c3c-8c96-ce8de101f7cf.cdc406pd09pasng7elgg.databases.appdomain.cloud:30929 --execute "create table hive_data.query_history.queries as select * from system.runtime.queries where 1=0" --user ibmlhapikey --password
-
Führen Sie die folgende Abfrage in regelmäßigen Abständen aus, um den Abfrageverlauf in die soeben erstellte Tabelle zu importieren.
INSERT INTO <non-system-table-name> SELECT * FROM system.runtime.queries WHERE query_id NOT IN (SELECT query_id FROM <non-system-table-name>);
- Beispiel
./presto --server \ https://8dac613f-ba5b-4c3c-8c96-ce8de101f7cf.cdc406pd09pasng7elgg.databases.appdomain.cloud:3092 \ –-execute "insert into hive_data.query_history.queries select * from system. runtime.queries \ where query_id not in (select query_id from hive_data.query_history.queries)" --user ibmlhapikey --password
-
Verwenden Sie die folgende Anweisung, um den Abfrageverlauf aus beiden Tabellen abzurufen.
select * from <non-system-table-name> union select * from `system.runtime.queries` order by created;
- Beispiel
./presto --server \ https://23b06b14-342b-4ed2-841d-7f02ca9ae788.cdc406pd09pasng7elgg.databases.appdomain.cloud:31530 \ --execute " select * from hive_data.query_history.queries union \ select * from system.runtime.queries order by created " \ --output-format=CSV_HEADER --user ibmlhapikey --password