Zeppelin-IoTDB
Zeppelin简介
Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过Zeppelin连接数据源并使用SQL、Scala等进行交互式操作。操作可以保存为文档(类似于Jupyter)。Zeppelin支持多种数据源,包括Spark、ElasticSearch、Cassandra和InfluxDB等等。现在,IoTDB已经支持使用Zeppelin进行操作。样例如下:

Zeppelin-IoTDB解释器
系统环境需求
| IoTDB 版本 | Java 版本 | Zeppelin 版本 |
|---|---|---|
>=0.12.0-SNAPSHOT |
>=1.8.0_271 |
>=0.9.0 |
安装 IoTDB:参考 Quick Start. 假设 IoTDB 安装在 $IoTDB_HOME.
安装 Zeppelin:
方法1 直接下载:下载 Zeppelin
(opens new window) 并解压二进制文件。推荐下载 netinst
(opens new window) 二进制包,此包由于未编译不相关的interpreter,因此大小相对较小。
方法2 源码编译:参考从源码构建 Zeppelin
(opens new window) ,使用命令为
mvn clean package -pl zeppelin-web,zeppelin-server -am -DskipTests。
假设 Zeppelin 安装在 $Zeppelin_HOME.
编译解释器
运行如下命令编译IoTDB Zeppelin解释器。
1. cd $IoTDB_HOME
2. mvn clean package -pl zeppelin-interpreter -am -DskipTests -P get-jar-with-dependencies
编译后的解释器位于如下目录:
1. $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar
安装解释器
当你编译好了解释器,在Zeppelin的解释器目录下创建一个新的文件夹iotdb,并将IoTDB解释器放入其中。
1. cd $IoTDB_HOME
2. mkdir -p $Zeppelin_HOME/interpreter/iotdb
3. cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb
启动 Zeppelin 和 IoTDB
进入 $Zeppelin_HOME 并运行Zeppelin:
1. # Unix/OS X
2. > ./bin/zeppelin-daemon.sh start
4. # Windows
5. > .\bin\zeppelin.cmd
进入 $IoTDB_HOME 并运行IoTDB:
1. # Unix/OS X
2. > nohup sbin/start-server.sh >/dev/null 2>&1 &
3. or
4. > nohup sbin/start-server.sh -c <conf_path> -rpc_port <rpc_port> >/dev/null 2>&1 &
6. # Windows
7. > sbin\start-server.bat -c <conf_path> -rpc_port <rpc_port>
使用 Zeppelin-IoTDB解释器
当Zeppelin启动后,访问 http://127.0.0.1:8080/
(opens new window)
通过如下步骤创建一个新的笔记本页面:
- 点击
Create new node按钮 - 设置笔记本名
- 选择解释器为iotdb
现在可以开始使用Zeppelin操作IoTDB了。

我们提供了一些简单的SQL来展示Zeppelin-IoTDB解释器的使用:
1. SET STORAGE GROUP TO root.ln.wf01.wt01;
2. CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN;
3. CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=PLAIN;
4. CREATE TIMESERIES root.ln.wf01.wt01.hardware WITH DATATYPE=INT32, ENCODING=PLAIN;
6. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
7. VALUES (1, 1.1, false, 11);
9. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
10. VALUES (2, 2.2, true, 22);
12. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
13. VALUES (3, 3.3, false, 33);
15. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
16. VALUES (4, 4.4, false, 44);
18. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
19. VALUES (5, 5.5, false, 55);
22. SELECT *
23. FROM root.ln.wf01.wt01
24. WHERE time >= 1
25. AND time <= 6;
样例如下:

用户也可以参考 [1]
(opens new window) 编写更丰富多彩的文档。
以上样例放置于 $IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln
解释器配置项
进入页面 http://127.0.0.1:8080/#/interpreter
(opens new window) 并配置IoTDB的连接参数:

可配置参数默认值和解释如下:
| 属性 | 默认值 | 描述 |
|---|---|---|
| iotdb.host | 127.0.0.1 | IoTDB 主机名 |
| iotdb.port | 6667 | IoTDB 端口 |
| iotdb.username | root | 用户名 |
| iotdb.password | root | 密码 |
| iotdb.fetchSize | 10000 | 查询结果分批次返回时,每一批数量 |
| iotdb.zoneId | 时区ID | |
| iotdb.enable.rpc.compression | FALSE | 是否允许rpc压缩 |
| iotdb.time.display.type | default | 时间戳的展示格式 |
