Analyze Presto Data in R via JDBC



Use standard R functions and the development environment of your choice to analyze Presto data with the CData JDBC Driver for Presto.

Access Presto data with pure R script and standard SQL on any machine where R and Java can be installed. You can use the CData JDBC Driver for Presto and the RJDBC package to work with remote Presto data in R. By using the CData Driver, you are leveraging a driver written for industry-proven standards to access your data in the popular, open-source R language. This article shows how to use the driver to execute SQL queries to Presto and visualize Presto data by calling standard R functions.

About Presto Data Integration

Accessing and integrating live data from Trino and Presto SQL engines has never been easier with CData. Customers rely on CData connectivity to:

  • Access data from Trino v345 and above (formerly PrestoSQL) and Presto v0.242 and above (formerly PrestoDB)
  • Read and write access all of the data underlying your Trino or Presto instances
  • Optimized query generation for maximum throughput.

Presto and Trino allow users to access a variety of underlying data sources through a single endpoint. When paired with CData connectivity, users get pure, SQL-92 access to their instances, allowing them to integrate business data with a data warehouse or easily access live data directly from their preferred tools, like Power BI and Tableau.

In many cases, CData's live connectivity surpasses the native import functionality available in tools. One customer was unable to effectively use Power BI due to the size of the datasets needed for reporting. When the company implemented the CData Power BI Connector for Presto they were able to generate reports in real-time using the DirectQuery connection mode.


Getting Started


Install R

You can match the driver's performance gains from multi-threading and managed code by running the multithreaded Microsoft R Open or by running open R linked with the BLAS/LAPACK libraries. This article uses Microsoft R Open 3.2.3, which is preconfigured to install packages from the Jan. 1, 2016 snapshot of the CRAN repository. This snapshot ensures reproducibility.

Load the RJDBC Package

To use the driver, download the RJDBC package. After installing the RJDBC package, the following line loads the package:

library(RJDBC)

Connect to Presto as a JDBC Data Source

You will need the following information to connect to Presto as a JDBC data source:

  • Driver Class: Set this to cdata.jdbc.presto.PrestoDriver
  • Classpath: Set this to the location of the driver JAR. By default this is the lib subfolder of the installation folder.

The DBI functions, such as dbConnect and dbSendQuery, provide a unified interface for writing data access code in R. Use the following line to initialize a DBI driver that can make JDBC requests to the CData JDBC Driver for Presto:

driver <- JDBC(driverClass = "cdata.jdbc.presto.PrestoDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.presto.jar", identifier.quote = "'")

You can now use DBI functions to connect to Presto and execute SQL queries. Initialize the JDBC connection with the dbConnect function.

Set the Server and Port connection properties to connect, in addition to any authentication properties that may be required.

To enable TLS/SSL, set UseSSL to true.

Authenticating with LDAP

In order to authenticate with LDAP, set the following connection properties:

  • AuthScheme: Set this to LDAP.
  • User: The username being authenticated with in LDAP.
  • Password: The password associated with the User you are authenticating against LDAP with.

Authenticating with Kerberos

In order to authenticate with KERBEROS, set the following connection properties:

  • AuthScheme: Set this to KERBEROS.
  • KerberosKDC: The Kerberos Key Distribution Center (KDC) service used to authenticate the user.
  • KerberosRealm: The Kerberos Realm used to authenticate the user with.
  • KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.
  • KerberosKeytabFile: The Keytab file containing your pairs of Kerberos principals and encrypted keys.
  • User: The user who is authenticating to Kerberos.
  • Password: The password used to authenticate to Kerberos.

Built-in Connection String Designer

For assistance in constructing the JDBC URL, use the connection string designer built into the Presto JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.

java -jar cdata.jdbc.presto.jar

Fill in the connection properties and copy the connection string to the clipboard.

Below is a sample dbConnect call, including a typical JDBC connection string:

conn <- dbConnect(driver,"jdbc:presto:Server=127.0.0.1;Port=8080;")

Schema Discovery

The driver models Presto APIs as relational tables, views, and stored procedures. Use the following line to retrieve the list of tables:

dbListTables(conn)

Execute SQL Queries

You can use the dbGetQuery function to execute any SQL query supported by the Presto API:

customer <- dbGetQuery(conn,"SELECT FirstName, LastName FROM Customer WHERE Id = '123456789'")

You can view the results in a data viewer window with the following command:

View(customer)

Plot Presto Data

You can now analyze Presto data with any of the data visualization packages available in the CRAN repository. You can create simple bar plots with the built-in bar plot function:

par(las=2,ps=10,mar=c(5,15,4,2)) barplot(customer$LastName, main="Presto Customer", names.arg = customer$FirstName, horiz=TRUE)

Ready to get started?

Download a free trial of the Presto Driver to get started:

 Download Now

Learn more:

Presto Icon Presto JDBC Driver

Rapidly create and deploy powerful Java applications that integrate with Presto.