Zeppelin 是一个基于Web的notebook提供数据可视化交互分析的WEB程序。
通过Zeppelin,你做出可数据驱动的、可交互且可协作的精美文档。
Zeppelin支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等等。
通过zeppelin的JDBC Interpreter,可以针对所有jdbc数据源进行可视化交互分析。,JDBC Interpreter目前除支持主流的RMDB数据库外,还支持基于spark、flink、hive计算框架进行SQL分析。
什么是Zeppelin?Zeppelin: Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala, Python, R and more.
特点如下:
Multi-purpose Notebook
The Notebook is the place for all your needs
Data IngestionData DiscoveryData AnalyticsData Visualization & Collaboration Multiple Language Backend:
通过Zeppelin解释器允许将任何语言/数据处理后端集成到Zeppelin中目前支持 Spark, Apache Flink, Python, R, JDBC, Markdown and Shell,详见下图 Data visualizationPivot chart:通过简单的拖拽实现数据的透视Dynamic forms,详见dynamic_formCollaborate by sharing your Notebook & Paragraph100% Opensource
zeppelin部署官网地址
第三方软件依赖:
- OpenJDK or Oracle JDK 1.8 (151+)
#从官网下载 cd /tmp curl -O https://dlcdn.apache.org/zeppelin/zeppelin-0.10.0/zeppelin-0.10.0-bin-all.tgz #解压 tar -zxvf zeppelin-0.10.0-bin-all.tgz -C /usr/local #产生配置文件 cp zeppelin-env.sh.template zeppelin-env.sh cp zeppelin-site.xml.template zeppelin-site.xml修改配置
vim zeppelin-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_191 #export HADOOP_CONF_DIR=/etc/hadoop/conf #export USE_HADOOP=true
vim zeppelin-site.xml
启动zeppelin.server.addr 0.0.0.0 Server binding address zeppelin.server.port 16888 Server port.
启动后,通过jps 可以查看到名称为ZeppelinServer的进程
cd /usr/local/zeppelin bin/zeppelin-daemon.sh startJDBC Interpreter
JDBC解释器允许创建到任何数据源的JDBC连接,可以执行任何SQL语句,针对jdbc数据源进行可视化交互分析
详见的配置请参见 interpreter jdbc配置
下图中的数据源官方已经被测试过,本文针对clickhouse 21.8.x,OpenGauss 2.1.0测试,均能正常使用。
mysql url后面常加参数:useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
更多的数据库的class、url、driver的配置参见com.alibaba:druid:1.2.1中的com.alibaba.druid.util.JdbcUtils 和 com.alibaba.druid.util.JdbcConstants两个类
| 数据库 | class name | jdbc-url | driver jar |
|---|---|---|---|
| mysql5.x | com.mysql.jdbc.Driver | jdbc:mysql://ip:port/ | mysql:mysql-connector-java:5.1.45 |
| mysql8.x | com.mysql.cj.jdbc.Driver | jdbc:mysql://ip:port/ | mysql:mysql-connector-java:8.0.27 |
| postgresql | org.postgresql.Driver | jdbc:postgresql://ip:port/ | org.postgresql:postgresql:42.2.24 |
| mariadb | org.mariadb.jdbc.Driver | jdbc:mariadb://ip:port | org.mariadb.jdbc:mariadb-java-client:2.7.4 |
| hive | org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip:10000 | org.apache.hive:hive-jdbc:2.3.4 org.apache.hive:hive-exec:2.3.4 |
| presto | io.prestosql.jdbc.PrestoDriver | jdbc:presto://ip:9090/hive | io.prestosql:presto-jdbc:350 |
| phoenix | org.apache.phoenix.jdbc.PhoenixDriver | jdbc:phoenix:ip1,ip2:2181/hbase | org.apache.phoenix:phoenix-core:4.4.0-Hbase-1.0 |
| clickhouse | com.clickhouse.jdbc.ClickHouseDriver | jdbc:ch://ip:port/test?socket_timeout=120000 | com.clickhouse:clickhouse-jdbc:0.3.2 |
| openGauss | org.postgresql.Driver | jdbc:postgresql://ip:port/ | 从官网下载并上传到服务器,此处指定绝对路径,如 |
| 达梦 | dm.jdbc.driver.DmDriver | jdbc:dm://ip:5236/db? zeroDateTimeBehavior=convertToNull &useUnicode=true &characterEncoding=utf-8 | |
| gbase | com.gbase.jdbc.Driver | jdbc:gbase://ip:8521/db | |
| sqlserver | com.microsoft.jdbc. sqlserver.SQLServerDriver | jdbc:microsoft:sqlserver://ip:1433; DatabaseName=db | |
| oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@ip:1521:orcl | |
| sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:ip:5007/db |
%后面跟jdbc_interpreter_name,如mysql一次可以执行多条SQL语句支持2种SQL注释:
Single line comment start with –Multiple line comment around with 连续运行SQL:通过refreshInterval(单位:毫秒),连续运行命令precode: 可以为每个数据源设置precode。precode在打开连接时运行一次。
%mysql
USE nacos;
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
%mysql -- single line comment show tables; select * from test_1;
%mysql(refreshInterval=1000) select * from pet;使用示例 数据统计示例
%clickhouse
SELECt
StartURL AS URL,
AVG(Duration) AS AvgDuration
FROM tutorial.visits_v1
WHERe StartDate BETWEEN '2014-03-23' AND '2014-03-30'
GROUP BY URL
ORDER BY AvgDuration DESC
LIMIT 10
数据可视化示例
%clickhouse select toHour(EventTime) as hour,count() as total from tutorial.hits_v1 group by hour;



