vloup created ZEPPELIN-2891:
-------------------------------

             Summary: Impossible to use jdbc interface with presto-jdbc >= 0.180
                 Key: ZEPPELIN-2891
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-2891
             Project: Zeppelin
          Issue Type: Bug
          Components: Interpreters
    Affects Versions: 0.7.2
         Environment: 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
            Reporter: vloup
            Priority: Blocker


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] ({pool-2-thread-2} 
SchedulerFactory.java[jobStarted]:131) - Job remoteInterpretJob_1504163661153 
started by scheduler org.apache.zeppelin.jdbc.JDBCInterpreter43219549
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: default, value: password
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: jdbc.auth.type
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: common, value: max_count
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: jdbc.principal
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: default, value: user
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: interpreter.localRepo
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: default, value: url
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: default, value: driver
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: jdbc.keytab.location
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: jdbc.concurrent.use
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: 
jdbc.concurrent.max_connection
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:159) - key: zeppelin, value: interpreter.output.limit
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] ({pool-2-thread-2} 
JDBCInterpreter.java[open]:187) - JDBC PropretiesMap: {default={user=presto, 
url=jdbc:presto://DOMAIN_NAME:4481/hive;LogLevel=6;LogPath=/log/, password=, 
driver=com.facebook.presto.jdbc.PrestoDriver}, common={max_count=1000}}
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] ({pool-2-thread-2} 
JDBCInterpreter.java[interpret]:691) - PropertyKey: default, SQL command: 'use 
dataset_demo;
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.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to