Esportazione e importazione della cronologia query

Il Presto coordinatore memorizza la cronologia delle query nella system.runtime.queries tabella. Ma system.runtime.queries la tabella viene troncata quando si riavvia Presto, con conseguente perdita della cronologia delle query. Per mitigare questo problema, è possibile esportare la cronologia delle query come file csv e importare la cronologia delle query dalla system.runtime.queries tabella in una tabella non di sistema.

Si consiglia di esportare periodicamente la cronologia della query per evitare di perderla.

Per importare ed esportare la cronologia delle query, è necessario installare Presto CLI. Per ulteriori informazioni, vedere Connessione al server Presto.

A partire dalla watsonx.data versione 2.2.0, l'autenticazione utilizzando ibmlhapikey e ibmlhtoken come nomi utente è deprecata. Questi formati vengono gradualmente eliminati nella 2.3.0 versione. Per garantire la compatibilità con le prossime versioni, utilizzare il nuovo formato:ibmlhapikey_<username> e ibmlhtoken_<username>.

Esportazione della cronologia query

Per esportare la cronologia della query, eseguire questo comando.

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

Questo comando genera un file CSV, che contiene la cronologia della query esportata.

  • Esempio
./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

Importazione della cronologia query

  1. Per importare la cronologia query, creare uno schema in un catalogo in cui si dispone dell'accesso in scrittura.

    create schema <non-system-catalog.schema-name> with (location=' s3a://<bucket-name>/<schema-name>')
    
    • Esempio
    ./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
    
  2. Creare una tabella nello stesso catalogo.

    Questa tabella deve avere gli stessi metadati della tabella system.runtime.queries. Utilizzare l'istruzione CREATE TABLE AS SELECT per creare questa tabella.

    create table <non-system-table-name> as select * from system.runtime.queries where 1=0;
    

    where 1=0 si assicura che non vengano selezionate righe da una tabella, ottenendo un insieme di risultati vuoto.

    • Esempio
    ./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
    
  3. Per importare la cronologia delle query nella tabella appena creata, eseguire periodicamente la seguente query.

    INSERT INTO <non-system-table-name>
    SELECT *
    FROM system.runtime.queries
    WHERE query_id NOT IN (SELECT query_id FROM <non-system-table-name>);
    
    • Esempio
    ./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
    
  4. Per richiamare la cronologia delle query da entrambe le tabelle, utilizzare la seguente istruzione.

    select * from <non-system-table-name> union select * from `system.runtime.queries` order by created;
    
    • Esempio
    ./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