Abfrageverlauf exportieren und importieren
Der Presto Koordinator speichert den Abfrageverlauf in system.runtime.queries einer Tabelle. Aber system.runtime.queries die Tabelle wird beim Neustart gekürzt Presto, was zum Verlust des Abfrageverlaufs führt. Um dieses
Problem zu beheben, können Sie den Abfrageverlauf als CSV-Datei exportieren und den Abfrageverlauf aus der system.runtime.queries Tabelle in eine Nicht-Systemtabelle 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.
Ab watsonx.data Version ist die Authentifizierung mit ibmlhapikey 2.2.0 und ibmlhtoken als Benutzernamen veraltet. Diese Formate werden in 2.3.0 der Version auslaufen. Um die Kompatibilität mit kommenden Versionen zu
gewährleisten, verwenden Sie das neue Format:ibmlhapikey_<username> und ibmlhtoken_<username>.
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.querieshaben. 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=0bedingung 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