Skip to content

Instantly share code, notes, and snippets.

@xerial
Last active July 20, 2017 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xerial/de55b08607df73fcec36867c2408ae09 to your computer and use it in GitHub Desktop.
Save xerial/de55b08607df73fcec36867c2408ae09 to your computer and use it in GitHub Desktop.
presto-jdbc TD connection example

Presto JDBC Setup

This is how to connect Treasure Data's Presto using Presto JDBC Driver:

  • Download presto-jdbc driver https://prestodb.io/docs/current/installation/jdbc.html
    • For using secure HTTPS (port 443) connection you need to use presto 0.148 or later.
  • Use the following parameters to connect prestobase on development server:
    • Driver name: com.facebook.presto.jdbc.PrestoDriver
    • user: (Your TD API key)
    • password: (can be empty or any string)
  • Connection URL examples:
jdbc:presto://api-presto.treasuredata.com:443
jdbc:presto://api-presto.treasuredata.com:443/td-presto
jdbc:presto://api-presto.treasuredata.com:443/td-presto/sample_datasets
  • Limitations
    • PreparedStatements is not yet supported
    • setAutoCommit(false) will throw an exception since we do not support transactions.

Example Code

Download presto-jdbc driver from https://prestodb.io/docs/current/installation/jdbc.html

$ javac Sample.java
$ java -cp .:presto-jdbc-0.152.jar Sample (your TD API key)
time=1412351990, method=GET, path=/category/office
time=1412351976, method=GET, path=/item/software/2265
time=1412351961, method=GET, path=/category/toys
time=1412351947, method=GET, path=/item/electronics/3305
time=1412351932, method=GET, path=/category/software
import java.sql.*;
class Sample {
public static void main(String[] args) {
if(args.length != 1) {
System.err.println("Please pass your TD API key as an argument");
return;
}
String apikey = args[0];
try {
Connection conn = DriverManager.getConnection("jdbc:presto://api-presto.treasuredata.com:443/td-presto/sample_datasets", apikey, "");
Statement stmt = conn.createStatement();
try {
ResultSet rs = stmt.executeQuery("SELECT time, method, path from www_access limit 5");
while(rs.next()) {
long time = rs.getLong(1);
String method = rs.getString(2);
String path = rs.getString(3);
System.out.println(String.format("time=%s, method=%s, path=%s", time, method, path));
}
}
finally {
stmt.close();
conn.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment