Jdbc interpreter 是一种比较特殊的Interpreter,凡是支持Jdbc的数据库都可以用这个Jdbc Interpreter,比如:
MySql, Postgre,Hive,Presto,Impala 等等。这篇文章主要讲Jdbc Interpreter的一般特性,具体每一种数据库的配置和用法可以参考另外的文章。

支持多行SQL

  1. %jdbc_interpreter_name
  2. USE zeppelin_demo;
  3. CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
  4. species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

支持SQL注释

你可以在SQL中穿插comment,有2种comment

  • 以 — 开头的单行comment
  • / / 包围的多行comment ```sql %jdbc_interpreter_name

— single line comment show tables; / multiple line comment / select * from test_1; ```

支持持续运行 SQL,可视化流式数据

默认情况下,SQL只会运行一次,但是你可以用参数 refreshInterval 来让SQL 每隔一段时间运行一次,这样就可以可视化流式数据(数据库的数据在更新,你的SQL在不断更新数据)

jdbc_refresh.gif

Jdbc连接池配置

配置名称 默认值 配置简介
testOnBorrow false 该配置用于指定从连接池里面获取JDBC连接时是否验证连接可用性。当指定为true时,如果尝试获取的连接验证失败,则将它从连接池删除,并尝试获取另一个连接。
testOnCreate false 该配置用于指定创建连接对象后是否对它进行验证。当设置为true时,若新创建的连接对象验证失败,则触发连接创建的连接获取操作将会失败。
testOnReturn false 该配置用于指定从连接池中返回连接给连接申请方前是否进行连接可用性验证。
testWhileIdle false 该配置用于指定进行空闲连接检测时,是否顺便对不满足驱逐条件的连接进行可用性检测。当配置为true时,若验证失败,则将对应连接从连接池删除。
timeBetweenEvictionRunsMillis -1L 用于指定空闲连接检测的周期(单位:毫秒),该配置值小于等于0表示不启用空闲连接检测。
maxWaitMillis -1L 用于指定获取连接时,若连接池当前暂无可用连接可以提供,允许等待的最大时长(单位:毫秒),超出等待时间后直接抛出异常。-1表示无限等待。
maxIdle 8 连接池允许的最大空闲连接数,负数表示无限制
minIdle 0 连接池允许的最小空闲连接数
maxTotal -1 连接池允许的最大连接数,负数表示无限制
validationQuery show database 指定用于检验连接池中连接可用性的SQL语句
本小节主要对JDBC解释器提供更灵活的连接池配置,合理利用好这些配置可以让我们的Jdbc解释器有更好的用户体验。另外这里的连接池配置适用于Hive on Zeppelin、Presto on Zeppelin等JDBC类解释器。

例如:使用JDBC解释器连接HiveServer2访问Hive时,由于HiveServer2本身有一个Session过期时间,当Hive Session过期后,Zeppelin这边再执行Hive SQL就会收到一个`Invalid SessionHandle` 运行时错误,重启Hive解释器可以解决。<br />    但更好的一个方案是我们可以在Hive解释器的全局配置中新增`default.validationQuery='select 1'`和`default.testOnBorrow=true`两项配置,这样在Hive Session过期后Zeppelin JDBC解释器会自动帮我们创建新的连接,这对于用户来说是完全无感知的。