You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by Denys Pavlov <de...@gmail.com> on 2015/01/29 17:14:57 UTC
Re: Using Drill with JDBC hangs
It should work with a local/embedded drill as well, as the tests for the
JDBC driver run against a local drill instance. I'm adding the dev mailing
list to this thread in the hopes that someone can help me understand what
the properties set on this line
<https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcAssert.java#L53-53>
are doing exactly, as that seems to be the only difference between my
snippet and the tests. Should I be setting them if I want to use Drill in
embedded/local mode over JDBC? Is there a way to generate the models file
<https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/resources/test-models.json>
?
Any help is appreciated!
Denys
On Wed, Jan 28, 2015 at 5:55 PM, Carol McDonald <cm...@maprtech.com>
wrote:
> I think jdbc requires zookeeper (?). The following works with drill on the
> mapr sandbox:
>
> public static void main(String[] args) throws Exception {
> String driver = "org.apache.drill.jdbc.Driver";
> String url =
> "jdbc:drill:zk=maprdemo:5181/drill/demo_mapr_com-drillbits";
> String username = "mapr";
> String password = "mapr";
> Class.forName(driver);
> Connection con = DriverManager.getConnection(url, username,
> password);
> Statement stmt = con.createStatement();
> ResultSet rs = stmt.executeQuery("SELECT * FROM dfs.views.custview
> limit 5");
> ResultSetMetaData rsmd = rs.getMetaData();
> int numberOfColumns = rsmd.getColumnCount();
>
> for (int i = 1; i <= numberOfColumns; i++) {
> System.out.print(rsmd.getColumnName(i) + " ");
> }
> System.out.println("");
>
> while (rs.next()) {
> for (int i = 1; i <= numberOfColumns; i++) {
> System.out.print(rs.getString(i)+ " ");
> }
> System.out.println("");
> }
> stmt.close();
> con.close();
> }
>
> }
>
> On Wed, Jan 28, 2015 at 5:39 PM, Denys Pavlov <de...@gmail.com>
> wrote:
>
> > Hi all,
> >
> > I am trying to use Drill programmatically in Java through the JDBC
> driver.
> > However, when I try to execute the query, the application hangs and never
> > returns the ResultSet. When I execute the exact same query in sqlline,
> > everything executes fine.
> >
> > The code snippet is below and should work with no configuration in
> > /tmp/drill.
> >
> > public class DrillJDBCTestTrial {
> > public static void main(String[] args) throws SQLException,
> > ClassNotFoundException {
> > Class.forName("org.apache.drill.jdbc.Driver");
> > Connection connection =
> > DriverManager.getConnection("jdbc:drill:zk=local");
> > String query = "select N_NAME from
> >
> >
> dfs.`/home/meatcar/dev/drill/apache-drill-0.7.0/sample-data/nation.parquet`";
> >
> > PreparedStatement statement = connection.prepareStatement(query);
> >
> > // hangs here
> > ResultSet rs = statement.executeQuery();
> > }
> > }
> >
> > Any help is appreciated.
> >
> >
> > Thanks,
> >
> > --
> > Denys Pavlov
> >
>
--
Denys Pavlov
Re: Using Drill with JDBC hangs
Posted by Jacques Nadeau <ja...@apache.org>.
The JDBC driver provided in the packaged 'jars/jdbc-driver/' directory
doesn't support embedded mode (zk=local). If you want to run with that
functionality, you need to do so by sourcing the classpath that the
Drillbit uses (which includes a large number of additional classes and
libraries). The jdbc-driver jar file is only for remote connection
Drillbits. The entry point and code doesn't change thus the unit tests you
observed.
On Thu, Jan 29, 2015 at 8:14 AM, Denys Pavlov <de...@gmail.com>
wrote:
> It should work with a local/embedded drill as well, as the tests for the
> JDBC driver run against a local drill instance. I'm adding the dev mailing
> list to this thread in the hopes that someone can help me understand what
> the properties set on this line
> <
> https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcAssert.java#L53-53
> >
> are doing exactly, as that seems to be the only difference between my
> snippet and the tests. Should I be setting them if I want to use Drill in
> embedded/local mode over JDBC? Is there a way to generate the models file
> <
> https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/resources/test-models.json
> >
> ?
>
> Any help is appreciated!
>
> Denys
>
> On Wed, Jan 28, 2015 at 5:55 PM, Carol McDonald <cm...@maprtech.com>
> wrote:
>
> > I think jdbc requires zookeeper (?). The following works with drill on
> the
> > mapr sandbox:
> >
> > public static void main(String[] args) throws Exception {
> > String driver = "org.apache.drill.jdbc.Driver";
> > String url =
> > "jdbc:drill:zk=maprdemo:5181/drill/demo_mapr_com-drillbits";
> > String username = "mapr";
> > String password = "mapr";
> > Class.forName(driver);
> > Connection con = DriverManager.getConnection(url, username,
> > password);
> > Statement stmt = con.createStatement();
> > ResultSet rs = stmt.executeQuery("SELECT * FROM
> dfs.views.custview
> > limit 5");
> > ResultSetMetaData rsmd = rs.getMetaData();
> > int numberOfColumns = rsmd.getColumnCount();
> >
> > for (int i = 1; i <= numberOfColumns; i++) {
> > System.out.print(rsmd.getColumnName(i) + " ");
> > }
> > System.out.println("");
> >
> > while (rs.next()) {
> > for (int i = 1; i <= numberOfColumns; i++) {
> > System.out.print(rs.getString(i)+ " ");
> > }
> > System.out.println("");
> > }
> > stmt.close();
> > con.close();
> > }
> >
> > }
> >
> > On Wed, Jan 28, 2015 at 5:39 PM, Denys Pavlov <de...@gmail.com>
> > wrote:
> >
> > > Hi all,
> > >
> > > I am trying to use Drill programmatically in Java through the JDBC
> > driver.
> > > However, when I try to execute the query, the application hangs and
> never
> > > returns the ResultSet. When I execute the exact same query in sqlline,
> > > everything executes fine.
> > >
> > > The code snippet is below and should work with no configuration in
> > > /tmp/drill.
> > >
> > > public class DrillJDBCTestTrial {
> > > public static void main(String[] args) throws SQLException,
> > > ClassNotFoundException {
> > > Class.forName("org.apache.drill.jdbc.Driver");
> > > Connection connection =
> > > DriverManager.getConnection("jdbc:drill:zk=local");
> > > String query = "select N_NAME from
> > >
> > >
> >
> dfs.`/home/meatcar/dev/drill/apache-drill-0.7.0/sample-data/nation.parquet`";
> > >
> > > PreparedStatement statement =
> connection.prepareStatement(query);
> > >
> > > // hangs here
> > > ResultSet rs = statement.executeQuery();
> > > }
> > > }
> > >
> > > Any help is appreciated.
> > >
> > >
> > > Thanks,
> > >
> > > --
> > > Denys Pavlov
> > >
> >
>
>
>
> --
> Denys Pavlov
>
Re: Using Drill with JDBC hangs
Posted by Jacques Nadeau <ja...@apache.org>.
The JDBC driver provided in the packaged 'jars/jdbc-driver/' directory
doesn't support embedded mode (zk=local). If you want to run with that
functionality, you need to do so by sourcing the classpath that the
Drillbit uses (which includes a large number of additional classes and
libraries). The jdbc-driver jar file is only for remote connection
Drillbits. The entry point and code doesn't change thus the unit tests you
observed.
On Thu, Jan 29, 2015 at 8:14 AM, Denys Pavlov <de...@gmail.com>
wrote:
> It should work with a local/embedded drill as well, as the tests for the
> JDBC driver run against a local drill instance. I'm adding the dev mailing
> list to this thread in the hopes that someone can help me understand what
> the properties set on this line
> <
> https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcAssert.java#L53-53
> >
> are doing exactly, as that seems to be the only difference between my
> snippet and the tests. Should I be setting them if I want to use Drill in
> embedded/local mode over JDBC? Is there a way to generate the models file
> <
> https://github.com/apache/drill/blob/e3ab2c1760ad34bda80141e2c3108f7eda7c9104/exec/jdbc/src/test/resources/test-models.json
> >
> ?
>
> Any help is appreciated!
>
> Denys
>
> On Wed, Jan 28, 2015 at 5:55 PM, Carol McDonald <cm...@maprtech.com>
> wrote:
>
> > I think jdbc requires zookeeper (?). The following works with drill on
> the
> > mapr sandbox:
> >
> > public static void main(String[] args) throws Exception {
> > String driver = "org.apache.drill.jdbc.Driver";
> > String url =
> > "jdbc:drill:zk=maprdemo:5181/drill/demo_mapr_com-drillbits";
> > String username = "mapr";
> > String password = "mapr";
> > Class.forName(driver);
> > Connection con = DriverManager.getConnection(url, username,
> > password);
> > Statement stmt = con.createStatement();
> > ResultSet rs = stmt.executeQuery("SELECT * FROM
> dfs.views.custview
> > limit 5");
> > ResultSetMetaData rsmd = rs.getMetaData();
> > int numberOfColumns = rsmd.getColumnCount();
> >
> > for (int i = 1; i <= numberOfColumns; i++) {
> > System.out.print(rsmd.getColumnName(i) + " ");
> > }
> > System.out.println("");
> >
> > while (rs.next()) {
> > for (int i = 1; i <= numberOfColumns; i++) {
> > System.out.print(rs.getString(i)+ " ");
> > }
> > System.out.println("");
> > }
> > stmt.close();
> > con.close();
> > }
> >
> > }
> >
> > On Wed, Jan 28, 2015 at 5:39 PM, Denys Pavlov <de...@gmail.com>
> > wrote:
> >
> > > Hi all,
> > >
> > > I am trying to use Drill programmatically in Java through the JDBC
> > driver.
> > > However, when I try to execute the query, the application hangs and
> never
> > > returns the ResultSet. When I execute the exact same query in sqlline,
> > > everything executes fine.
> > >
> > > The code snippet is below and should work with no configuration in
> > > /tmp/drill.
> > >
> > > public class DrillJDBCTestTrial {
> > > public static void main(String[] args) throws SQLException,
> > > ClassNotFoundException {
> > > Class.forName("org.apache.drill.jdbc.Driver");
> > > Connection connection =
> > > DriverManager.getConnection("jdbc:drill:zk=local");
> > > String query = "select N_NAME from
> > >
> > >
> >
> dfs.`/home/meatcar/dev/drill/apache-drill-0.7.0/sample-data/nation.parquet`";
> > >
> > > PreparedStatement statement =
> connection.prepareStatement(query);
> > >
> > > // hangs here
> > > ResultSet rs = statement.executeQuery();
> > > }
> > > }
> > >
> > > Any help is appreciated.
> > >
> > >
> > > Thanks,
> > >
> > > --
> > > Denys Pavlov
> > >
> >
>
>
>
> --
> Denys Pavlov
>