Zeppelin-IoTDB

Zeppelin简介

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

iotdb-note-snapshot

Zeppelin-IoTDB解释器

系统环境需求

IoTDB 版本Java 版本Zeppelin 版本
>=0.12.0-SNAPSHOT>=1.8.0_271>=0.9.0

安装 IoTDB:参考 Quick Start. 假设 IoTDB 安装在 $IoTDB_HOME.

安装 Zeppelin:

方法1 直接下载:下载 ZeppelinZeppelin-IoTDB - 图2 (opens new window) 并解压二进制文件。推荐下载 netinstZeppelin-IoTDB - 图3 (opens new window) 二进制包,此包由于未编译不相关的interpreter,因此大小相对较小。

方法2 源码编译:参考从源码构建 ZeppelinZeppelin-IoTDB - 图4 (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
  3. # Windows
  4. > .\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 &
  5. # Windows
  6. > sbin\start-server.bat -c <conf_path> -rpc_port <rpc_port>

使用 Zeppelin-IoTDB解释器

当Zeppelin启动后,访问 http://127.0.0.1:8080/Zeppelin-IoTDB - 图5 (opens new window)

通过如下步骤创建一个新的笔记本页面:

  1. 点击 Create new node 按钮
  2. 设置笔记本名
  3. 选择解释器为iotdb

现在可以开始使用Zeppelin操作IoTDB了。

iotdb-create-note

我们提供了一些简单的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;
  5. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
  6. VALUES (1, 1.1, false, 11);
  7. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
  8. VALUES (2, 2.2, true, 22);
  9. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
  10. VALUES (3, 3.3, false, 33);
  11. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
  12. VALUES (4, 4.4, false, 44);
  13. INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
  14. VALUES (5, 5.5, false, 55);
  15. SELECT *
  16. FROM root.ln.wf01.wt01
  17. WHERE time >= 1
  18. AND time <= 6;

样例如下:

iotdb-note-snapshot2

用户也可以参考 [1]Zeppelin-IoTDB - 图8 (opens new window) 编写更丰富多彩的文档。

以上样例放置于 $IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln

解释器配置项

进入页面 http://127.0.0.1:8080/#/interpreterZeppelin-IoTDB - 图9 (opens new window) 并配置IoTDB的连接参数:

iotdb-configuration

可配置参数默认值和解释如下:

属性默认值描述
iotdb.host127.0.0.1IoTDB 主机名
iotdb.port6667IoTDB 端口
iotdb.usernameroot用户名
iotdb.passwordroot密码
iotdb.fetchSize10000查询结果分批次返回时,每一批数量
iotdb.zoneId时区ID
iotdb.enable.rpc.compressionFALSE是否允许rpc压缩
iotdb.time.display.typedefault时间戳的展示格式