You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Jingguo Yao (JIRA)" <ji...@apache.org> on 2016/05/05 07:30:12 UTC
[jira] [Commented] (DRILL-3075) Connecting to Drill via JDBC fails
with UnresolvedAddressException when URL contains ZK info
[ https://issues.apache.org/jira/browse/DRILL-3075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15272015#comment-15272015 ]
Jingguo Yao commented on DRILL-3075:
------------------------------------
If the url contains `zk` parameter, host names and port numbers for drillbit servers are retrieved from Zookeeper. You can check whether you can connect to these drillbit servers with the information from Zookeeper.
> Connecting to Drill via JDBC fails with UnresolvedAddressException when URL contains ZK info
> --------------------------------------------------------------------------------------------
>
> Key: DRILL-3075
> URL: https://issues.apache.org/jira/browse/DRILL-3075
> Project: Apache Drill
> Issue Type: Bug
> Components: Client - JDBC
> Affects Versions: 1.0.0
> Reporter: Abhishek Girish
> Fix For: Future
>
>
> Connecting to Drill via JDBC fails if the URL contains the ZK host:port:
> {code}
> ...
> String schema = "dfs.tmp";
> String zookeepers = "10.10.103.32:5181/drill/drillbits1";
> String url = "jdbc:drill:schema="+schema+";zk="+zookeepers;
>
> Connection conn = null;
> Statement stmt = null;
>
> String query = "select * from dfs.tpch100.customer limit 1";
>
> try{
>
> Class.forName("org.apache.drill.jdbc.Driver");
> conn = DriverManager.getConnection(url,"root","root");
>
> stmt = conn.createStatement();
> ...
> {code}
> The following code fails to connect to Drill with the following error:
> {code}
> java.sql.SQLException: Failure while attempting to connect to Drill: CONNECTION : java.nio.channels.UnresolvedAddressException
> at org.apache.drill.jdbc.DrillConnectionImpl.<init>(DrillConnectionImpl.java:123)
> at org.apache.drill.jdbc.DrillJdbc41Factory$DrillJdbc41Connection.<init>(DrillJdbc41Factory.java:97)
> at org.apache.drill.jdbc.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:60)
> at org.apache.drill.jdbc.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:46)
> at org.apache.drill.jdbc.DrillFactory.newConnection(DrillFactory.java:54)
> at net.hydromatic.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:126)
> at java.sql.DriverManager.getConnection(DriverManager.java:571)
> at java.sql.DriverManager.getConnection(DriverManager.java:215)
> at drill.DrillJDBC.main(DrillJDBC.java:39)
> Caused by: org.apache.drill.exec.rpc.RpcException: CONNECTION : java.nio.channels.UnresolvedAddressException
> at org.apache.drill.exec.client.DrillClient$FutureHandler.connectionFailed(DrillClient.java:414)
> at org.apache.drill.exec.rpc.BasicClient$ConnectionMultiListener$ConnectionHandler.operationComplete(BasicClient.java:209)
> at org.apache.drill.exec.rpc.BasicClient$ConnectionMultiListener$ConnectionHandler.operationComplete(BasicClient.java:193)
> at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:680)
> at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:567)
> at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:424)
> at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.connect(AbstractNioChannel.java:235)
> at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1089)
> at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
> at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
> at io.netty.channel.ChannelOutboundHandlerAdapter.connect(ChannelOutboundHandlerAdapter.java:47)
> at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
> at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
> at io.netty.channel.ChannelDuplexHandler.connect(ChannelDuplexHandler.java:50)
> at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
> at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
> at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:510)
> at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:909)
> at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:203)
> at io.netty.bootstrap.Bootstrap$2.run(Bootstrap.java:165)
> at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)
> at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
> at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.util.concurrent.ExecutionException: java.nio.channels.UnresolvedAddressException
> at io.netty.util.concurrent.AbstractFuture.get(AbstractFuture.java:37)
> at org.apache.drill.exec.rpc.BasicClient$ConnectionMultiListener$ConnectionHandler.operationComplete(BasicClient.java:199)
> ... 22 more
> Caused by: java.nio.channels.UnresolvedAddressException
> at sun.nio.ch.Net.checkAddress(Net.java:127)
> at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:644)
> at io.netty.channel.socket.nio.NioSocketChannel.doConnect(NioSocketChannel.java:209)
> at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.connect(AbstractNioChannel.java:199)
> ... 17 more
> {code}
> Can connect when the URL is changed from
> {code}
> String url = "jdbc:drill:schema="+schema+";zk=10.10.103.32:5181/drill/drillbits1";
> to
> String url = "jdbc:drill:schema="+schema+";drillbit=10.10.103.32";
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)