Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
0.7.2
-
Official apache/zeppelin:0.7.2 docker image environment.
Deployment:
{{docker run \
--name zeppelin072 \
-v /etc/zeppelin/conf/:/zeppelin/conf \
-v /etc/zeppelin/notebook/:/notebook \
-v /etc/zeppelin/log/:/log \
--network=host \
-d \
apache/zeppelin:0.7.2}}PrestoDB 0.183
Docker 17.03.1-ce running on Ubuntu 16.04.2 LTS (xenial) on amd64
Official apache/zeppelin:0.7.2 docker image environment. Deployment: {{docker run \ --name zeppelin072 \ -v /etc/zeppelin/conf/:/zeppelin/conf \ -v /etc/zeppelin/notebook/:/notebook \ -v /etc/zeppelin/log/:/log \ --network=host \ -d \ apache/zeppelin:0.7.2}} PrestoDB 0.183 Docker 17.03.1-ce running on Ubuntu 16.04.2 LTS (xenial) on amd64
Description
Hello,
I have been trying since yesterday to integrate Presto (0.183) with Apache Zeppelin (0.7.2) (using the presto-jdbc driver interface), and, so far, I am hitting a roadblock.
Since presto version 0.180 and higher, with commit defabcba4e1b89d5df536da51258cfdbfea906cb ("Improve properties/URL parameter handling"), developers did tighten connection properties with com.facebook.presto.jdbc.PrestoDriverUri.validateConnectionProperties.
This function rejects anything that is not specified into com.facebook.presto.jdbc.ConnectionProperties.
Sadly, Zeppelin adds extra property keys such as "url" and "driver" which, naturally, get rejected. (See org.apache.zeppelin.jdbc.JDBCInterpreter.java at function "open")
A typical debug log would look like that:
{{ INFO [2017-08-31 07:14:21,156] (
DEBUG [2017-08-31 07:14:21,157] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: default.password
DEBUG [2017-08-31 07:14:21,157] (
DEBUG [2017-08-31 07:14:21,157] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.jdbc.auth.type
DEBUG [2017-08-31 07:14:21,159] (
DEBUG [2017-08-31 07:14:21,160] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: common.max_count
DEBUG [2017-08-31 07:14:21,160] (
DEBUG [2017-08-31 07:14:21,160] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.jdbc.principal
DEBUG [2017-08-31 07:14:21,160] (
DEBUG [2017-08-31 07:14:21,160] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: default.user
DEBUG [2017-08-31 07:14:21,160] (
DEBUG [2017-08-31 07:14:21,160] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.interpreter.localRepo
DEBUG [2017-08-31 07:14:21,161] (
DEBUG [2017-08-31 07:14:21,161] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: default.url
DEBUG [2017-08-31 07:14:21,161] (
DEBUG [2017-08-31 07:14:21,161] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: default.driver
DEBUG [2017-08-31 07:14:21,161] (
DEBUG [2017-08-31 07:14:21,161] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.jdbc.keytab.location
DEBUG [2017-08-31 07:14:21,161] (
DEBUG [2017-08-31 07:14:21,161] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.jdbc.concurrent.use
DEBUG [2017-08-31 07:14:21,162] (
DEBUG [2017-08-31 07:14:21,162] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.jdbc.concurrent.max_connection
DEBUG [2017-08-31 07:14:21,162] (
DEBUG [2017-08-31 07:14:21,162] ({pool-2-thread-2}
JDBCInterpreter.java[open]:156) - propertyKey: zeppelin.interpreter.output.limit
DEBUG [2017-08-31 07:14:21,162] (
ERROR [2017-08-31 07:14:21,162] ({pool-2-thread-2}
JDBCInterpreter.java[open]:177) - zeppelin will be ignored. driver.zeppelin and zeppelin.url is mandatory.
DEBUG [2017-08-31 07:14:21,166] (
DEBUG [2017-08-31 07:14:21,191] ({pool-1-thread-3} Interpreter.java[getProperty]:165) - key: zeppelin.jdbc.concurrent.use, value: true
DEBUG [2017-08-31 07:14:21,192] ({pool-1-thread-3} Interpreter.java[getProperty]:165) - key: zeppelin.jdbc.concurrent.max_connection, value: 10
DEBUG [2017-08-31 07:14:21,208] ({pool-2-thread-2}
JDBCInterpreter.java[interpret]:683) - Run SQL command 'use dataset_demo;
show tables;'
DEBUG [2017-08-31 07:14:21,208] (
show tables;'
ERROR [2017-08-31 07:14:21,690] ({pool-2-thread-2}
JDBCInterpreter.java[executeSql]:631) - Cannot run use dataset_demo;
show tables;
java.sql.SQLException: Unrecognized connection property 'url'
at com.facebook.presto.jdbc.PrestoDriverUri.validateConnectionProperties(PrestoDriverUri.java:292)
at com.facebook.presto.jdbc.PrestoDriverUri.<init>(PrestoDriverUri.java:89)
at com.facebook.presto.jdbc.PrestoDriverUri.<init>(PrestoDriverUri.java:79)
at com.facebook.presto.jdbc.PrestoDriver.connect(PrestoDriver.java:86)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.apache.commons.dbcp2.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:79)
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:205)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:861)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
at org.apache.commons.dbcp2.PoolingDriver.connect(PoolingDriver.java:129)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at org.apache.zeppelin.jdbc.JDBCInterpreter.getConnectionFromPool(JDBCInterpreter.java:354)
at org.apache.zeppelin.jdbc.JDBCInterpreter.getConnection(JDBCInterpreter.java:424)
at org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:565)
at org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:692)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:97)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:498)
at org.apache.zeppelin.scheduler.Job.run(Job.java:175)
at org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)}}
As a workaround, it is possible to locally downgrade the presto-jdbc driver in Zeppelin to version 0.179, but we do lack features included in later versions.
Comes my question: which one shall get patched?
I am doing a similar report on the presto google group.
Attachments
Attachments
Issue Links
- links to