How To Connect To Presto
Connections to and from Presto fall into three main categories:
1) The Presto connectors that provide access to source data in various databases and file systems. There are many connectors and they are listed here: https://prestodb.io/docs/current/connector.html. One of the most commonly used Presto connectors is Hive which gives query access to data in HDFS and S3 stored in a variety of formats. Other connectors provide access to relational databases like RedShift, Postgres and MySQL , and to NoSQL sources like Elastic search and Mongo.
2) Applications that work with Presto out of the box – these include Apache Superset, Airpal, and the Presto CLI.
3) Presto’s interfaces that allow Presto clusters to be accessed by tools and applications. There are four primary interfaces:
API
Presto’s HTTP API is the communication protocol between server and client. It’s used to send query statements for execution on the server and to receive results back to the client. See https://github.com/prestodb/presto/wiki/HTTP-Protocol for details and usage notes.
As an example., you can make a simple REST call to Presto to get a JSON dump of recently run queries using the syntax: http://<prestoServerHost>:<port>/v1/query. The default port is 8080.
You can optionally specify a query ID – in this example the query ID is 20200926_204458_00000_68x9u: http://myHost:8080/v1/query/20200926_204458_00000_68x9u
JDBC
Presto can be accessed using SQL from Java using the JDBC driver. Download link is in the documentation: https://prestodb.io/docs/current/installation/jdbc.html. The following JDBC URL connection string formats are supported:
jdbc:presto://host:port
jdbc:presto://host:port/catalog
jdbc:presto://host:port/catalog/schema
Here’s example Java code to establish a connection to a Presto cluster:
String sql = "SELECT * FROM sys.node";
String url = "jdbc:presto://localhost:8080/catalog/schema";
try (Connection connection =
DriverManager.getConnection(url, "test", null)) {
try (Statement statement = connection.createStatement()) {
try (ResultSet rs = statement.executeQuery(sql)) {
while (rs.next()) {
System.out.println(rs.getString("node_id"));
}
}
}
}
ODBC
Several free and paid-for options exist:
- Free: Prestogres is a gateway server that allows clients to use PostgreSQL protocol to run queries on Presto: https://github.com/treasuredata/prestogres/blob/master/README.md
- Paid: https://www.simba.com/drivers/presto-odbc-jdbc/
- Paid: https://www.cdata.com/drivers/presto/odbc/
Client libraries
Presto libraries for C, Go, Java, node.js, PHP, Python, R, Ruby are available at https://prestodb.io/resources.html#libraries
We hope the above How To helps you Connect To Presto.