Exportando e Importando o Histórico de Consulta

O Presto coordenador armazena o histórico de consultas na system.runtime.queries tabela. Mas system.runtime.queries a tabela é truncada quando você reinicia Presto, resultando na perda do histórico de consultas. Para mitigar esse problema, você pode exportar o histórico de consultas como um arquivo csv e também importar o histórico de consultas da system.runtime.queries tabela para uma tabela não pertencente ao sistema.

Recomenda-se exportar periodicamente o histórico de consulta para evitar perdê-lo.

Para importar e exportar o histórico de consultas, você deve instalar o Presto CLI. Para obter mais informações, consulte Conexão com o servidor Presto.

A partir da watsonx.data versão 2.2.0, a autenticação usando ibmlhapikey e ibmlhtoken como nomes de usuário está obsoleta. Esses formatos serão descontinuados na 2.3.0 versão. Para garantir a compatibilidade com as próximas versões, use o novo formato:ibmlhapikey_<username> e ibmlhtoken_<username>.

Exportando histórico de consulta

Para exportar o histórico de consulta, execute o comando a seguir:

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

Esse comando gera um arquivo CSV, que contém o histórico de consulta exportada

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

Importando histórico de consulta

  1. Para importar o histórico de consulta, crie um esquema em um catálogo no qual você tenha o acesso de gravação

    create schema <non-system-catalog.schema-name> with (location=' s3a://<bucket-name>/<schema-name>')
    
    • Exemplo
    ./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. Crie uma tabela no mesmo catálogo..

    Essa tabela deve ter os metadados da tabela system.runtime.queries. Use a instrução CREATE TABLE AS SELECT para criar esta tabela

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

    where 1=0 garante que nenhuma linha seja selecionada em uma tabela, resultando em um conjunto de resultados vazio.

    • Exemplo
    ./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. Para importar o histórico de consulta para a tabela recém-criada, execute a consulta a seguir periodicamente.

    INSERT INTO <non-system-table-name>
    SELECT *
    FROM system.runtime.queries
    WHERE query_id NOT IN (SELECT query_id FROM <non-system-table-name>);
    
    • Exemplo
    ./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. Para recuperar o histórico de consulta de ambas as tabelas, use a instrução a seguir.

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