Conectando-se ao Presto servidor
Presto O CLI fornece um shell interativo baseado em terminal para executar consultas.
Em IBM® watsonx.data, você pode se conectar ao servidor Presto de várias maneiras com base na plataforma e nos utilitários que estiver usando. Consulte as seções a seguir para obter mais detalhes:
- Conexão ao mecanismo Presto usando o Presto CLI(remoto)
- Conexão com o mecanismo Presto usando JDBC
- Conexão com o mecanismo Presto usando scripts Python
Deve-se especificar o local ao criar o esquema usando a CLI. Por exemplo,
location = s3a://<storage-name>/
Pré-requisitos
Obtenção dos detalhes do nome do host e da porta do mecanismo Presto
-
Faça login no console watsonx.data da web.
-
Acesse Gerenciador de infraestrutura e clique em Visualização de lista
-
Na guia Mecanismos clique no nome do mecanismo para o qual você precisa do nome do host e detalhes da porta.
-
No rótulo Host, clique no ícone Copiar para a área de transferência para copiar os detalhes do host.
-
Copie os detalhes do host para um bloco de notas
Obtendo a chave de API da IBM ou o token do IAM IBM
Use a chave de API IBM ou o token do IAM IBM de acordo com seus requisitos.
É recomendado usar o token do IAM para carga de trabalho de estresse.
Obter chave IBM API
Se você ativou External Identity Interactions Limited o recurso e está usando chaves API para se comunicar com watsonx.data, você deve criar a chave API a partir da conta onde o recurso watsonx.data está provisionado.
-
Faça login no IBM Cloud console.
-
Na barra de navegação, clique em Gerenciar e selecione Acesso (IAM).
-
Clique em Chaves API na barra de navegação à esquerda.
-
Clique em Criar +.
-
Na janela Criar IBM Cloud, insira um nome para sua chave de API e insira a descrição apropriada para a chave. Por exemplo,
ibmlhtoken testing -
Clique em Criar. Uma janela com a mensagem chave de API criada com sucesso é exibida
-
Clique em Baixar para salvar a chave API em seu computador local.
-
Abra o arquivo transferido por download e copie a chave de API para um arquivo de bloco de notas
Obtendo o token do IBM Access Management (IAM)
-
Chame o terminal REST no IAM para obter o token IAM.
-
Substitua
<your-api-key>por sua chave IBM API.curl -X POST 'https://iam.cloud.ibm.com/identity/token' -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=MY_APIKEY'
Conectando-se ao mecanismo Presto por meio da CLI (remota) do Presto
-
Faça o download do executável Presto
jarem https://prestodb.io/getting-started/ -
Renomeie o arquivo transferido por download como presto.. Torne-o executável com o
chmod +xe execute-o -
Para verificar se Presto CLI está instalado, execute
./presto --version. A versão do Presto cli é exibida. Por exemplo,Presto CLI 0.281-cfbc6eb -
Execute os seguintes comandos no sistema em que Presto CLI está instalado. Você pode usar um dos seguintes métodos para autenticar-se Presto:
-
Usando nome de usuário e senha: Para fazer isso, execute o seguinte comando:
-
Se você estiver usando uma chave API, execute o seguinte comando:
./presto --server <https://Prestoengine host details> --catalog iceberg_data --schema default --user ibmlhapikey_<your-username> --password -
Se estiver usando o IBM token IAM, execute o seguinte comando:
./presto --server <https://Prestoengine host details> --catalog iceberg_data --schema default --user ibmlhtoken_<your-username> --password
O
<your-username>será opcional se você tiver várias conexões com usuários diferentes e desejar diferenciá-las,Insira sua chave de API da IBM ou o token do IAM da IBM no prompt
-
-
Token JWT: O método JWT de autenticação está disponível por padrão a partir de 2.1.2. Execute o seguinte comando para se conectar ao presto usando o token JWT:
Para usar esse método de autenticação nas versões anteriores do watsonx.data (anteriores ao 2.1.2 lançamento do ), entre em contato com IBM o suporte e habilite o recurso.
```bash {: codeblock} ./presto --server <https://Prestoengine host details> --catalog iceberg_data --schema default --access-token <ACCESS_TOKEN> ```Para gerar
<ACCESS_TOKEN>, use um dos seguintes métodos:-
Para obter o token do IBM Access Management (IAM), consulte o token(IAM).
-
Obtenha
<ACCESS_TOKEN>usando o seguinte comando:curl --location 'https://us-south.lakehouse.dev.cloud.ibm.com/lakehouse/api/v2/auth/authenticate/' \ --header 'Content-Type: application/json' \ --data-raw '{ "username": "ibmlhtoken_<user-name>", "password": "<IAM_TOKEN>", "instance_id": "<instance_id>", "instance_name": "" }'<IAM_TOKEN>: Specify the token generated from (IAM) token.<user-name>: Specify the email id.<instance_id>: Specify the instance CRN.
-
-
No prompt Presto, digite
show catalogs;. A lista de catálogos é exibida Agora você está conectado ao mecanismo Presto em watsonx.data por meio da CLI Presto.presto:default> show catalogs; Catalog -------------- iceberg_data jmx system tpcds tpch (5 rows)
Conexão com o mecanismo Presto usando JDBC
-
Faça download e instale os últimos JDBC na máquina cliente.
-
Inclua o arquivo
jartransferido por download no caminho da classe de seu aplicativo Java -
Obtenha a chave de API.
Use
ibmlhapikeycomo nome de usuário e a chave da API como senha. Para obter mais informações, consulte Obtenção da IBM.A partir da watsonx.data versão 2.2.0, a autenticação usando
ibmlhapikeyeibmlhtokencomo 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>eibmlhtoken_<username>. -
Obtenha o nome do host e a porta Para obter mais informações, consulte Obtenção dos detalhes do nome do host e da porta do mecanismo Presto.
-
Crie um aplicativo Java usando a interface JDBC.. A seguir há um exemplo de fragmento Java:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; public class PrestoJdbcSample { public static void main(String[] args) throws Exception { /* * example of fetching the location and credentials needed to connect, from * environment variables */ String username = System.getenv("ENG_USERNAME"); String password = System.getenv("ENG_PASSWORD"); String hostname = System.getenv("ENG_HOST"); String portnumber = System.getenv("ENG_PORT"); String presto_url = "jdbc:presto://" + hostname + ":" + portnumber; Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { /* load the Presto JDBC Driver class */ String driverClass = "com.facebook.presto.jdbc.PrestoDriver"; Class.forName(driverClass); /* Set the connection properties */ Properties properties = new Properties(); properties.setProperty("user", username); properties.setProperty("password", password); properties.setProperty("SSL", "true"); /* Connect */ connection = DriverManager.getConnection(presto_url, properties); /* Issue a Query */ String query = "SELECT * FROM tpch.tiny.customer LIMIT 10"; statement = connection.createStatement(); resultSet = statement.executeQuery(query); /* iterate through the results */ while (resultSet.next()) { String phone = resultSet.getString("phone"); String name = resultSet.getString("name"); System.out.println("phone = " + phone + ", name = " + name); } } catch (Exception e) { e.printStackTrace(); } finally { /* clean up at the end always **/ if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } } }Substitua os parâmetros no comando pelo seguinte:
<PRESTO_URL>Identifica o jdbc URL para o servidor Presto.<EMAIL_ID>com seu ID de e-mail<API_KEY>com a chave da APISe você estiver usando um token IBM IAM, substitua
ibmapikeyporibmlhtokene passe o token. -
Compile e execute o comando.
Conexão com o mecanismo Presto usando scripts Python
-
Instale o python 3.x (3.10 ou mais recente recomendado) e
pip3na estação de trabalho do cliente. -
Use a interface DBAPI para consultar Presto. A seguir está um script python de amostra
import os import prestodb username=os.environ["ENG_USERNAME"] password=os.environ["ENG_PASSWORD"] hostname=os.environ["ENG_HOST"] portnumber=os.environ["ENG_PORT"] with prestodb.dbapi.connect( host=hostname, port=portnumber, user=username, catalog='tpch', schema='tiny', http_scheme='https', auth=prestodb.auth.BasicAuthentication(username,password) ) as conn: cur = conn.cursor() cur.execute('select * from tpch.tiny.customer limit 10') rows = cur.fetchall() print(rows)O comando consulta as tabelas
system.runtime.nodesdo sistema que mostram os nós no Presto cluster. A implementação DBAPI noprestodb.dbapifornece métodos para recuperar algumas linhas.. Por exemplo,Cursorfetchone()ouCursor.fetchmany(). Por padrão,Cursor.fetchmany()busca uma linha. Configureprestodb.dbapi.Cursor.arraysizeadequadamente. -
Compile e execute o comando.