Here is a quick draft on accessing Apache Drill via the java JDBC.
1. Add the Drill dependency-
<dependency> <groupId>org.apache.drill.exec</groupId> <artifactId>drill-jdbc</artifactId> <version>1.1.0</version> </dependency>
2. Java Code to access Drill
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.Properties; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.client.DrillClient; import org.apache.drill.exec.proto.UserBitShared.QueryType; import org.apache.drill.exec.rpc.RpcException; import org.apache.drill.exec.rpc.user.QueryDataBatch; import org.apache.drill.jdbc.Driver; public class DrillJdbcTest { public static void main(String[] args) { try { method(); } catch (Exception e) { e.printStackTrace(); } } public static void method() throws SQLException { String sql = "SELECT * FROM cp.`employee.json` LIMIT 20"; Connection con = null; String jdbcUrl = "jdbc:drill:zk=local"; //String jdbcUrl = "jdbc:drill:zk=127.0.0.1:2181/drill/drillbits1;schema=dfs.tmp"; try { con = new Driver().connect(jdbcUrl, getDefaultProperties()); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); System.out.println(rs.getString(3)); } System.out.println("DONE !!"); } catch (Exception ex) { ex.printStackTrace(); } finally { con.close(); } } public static Properties getDefaultProperties() { final Properties properties = new Properties(); properties.setProperty("drillJDBCUnitTests", "true"); properties.setProperty(ExecConstants.HTTP_ENABLE, "false"); return properties; } }