Apache Zeppelin
Apache Zeppelin
Zeppelin 简介
Apache Zeppelin 是一个基于网页的交互式数据分析系统。用户可以通过 Zeppelin 连接数据源并使用 SQL、Scala 等进行交互式操作。操作可以保存为文档(类似于 Jupyter)。Zeppelin 支持多种数据源,包括 Spark、ElasticSearch、Cassandra 和 InfluxDB 等等。现在,IoTDB 已经支持使用 Zeppelin 进行操作。样例如下:
Zeppelin-IoTDB 解释器
系统环境需求
IoTDB 版本 | Java 版本 | Zeppelin 版本 |
---|---|---|
>=0.12.0 | >=1.8.0_271 | >=0.9.0 |
安装 IoTDB:参考 快速上手. 假设 IoTDB 安装在 $IoTDB_HOME
.
安装 Zeppelin:
方法 1 直接下载:下载 Zeppelin 并解压二进制文件。推荐下载 netinst 二进制包,此包由于未编译不相关的 interpreter,因此大小相对较小。
方法 2 源码编译:参考 从源码构建 Zeppelin ,使用命令为
mvn clean package -pl zeppelin-web,zeppelin-server -am -DskipTests
。
假设 Zeppelin 安装在 $Zeppelin_HOME
.
编译解释器
运行如下命令编译 IoTDB Zeppelin 解释器。
cd $IoTDB_HOME
mvn clean package -pl iotdb-connector/zeppelin-interpreter -am -DskipTests -P get-jar-with-dependencies
编译后的解释器位于如下目录:
$IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar
修改 Zeppelin 配置
进入 $Zeppelin_HOME/conf
,使用 template 创建 Zeppelin 配置文件:
cp zeppelin-site.xml.template zeppelin-site.xml
打开 zeppelin-site.xml 文件,将 zeppelin.server.addr
项修改为 0.0.0.0
安装解释器
当你编译好了解释器,在 Zeppelin 的解释器目录下创建一个新的文件夹iotdb
,并将 IoTDB 解释器放入其中。
cd $IoTDB_HOME
mkdir -p $Zeppelin_HOME/interpreter/iotdb
cp $IoTDB_HOME/zeppelin-interpreter/target/zeppelin-{version}-SNAPSHOT-jar-with-dependencies.jar $Zeppelin_HOME/interpreter/iotdb
启动 Zeppelin 和 IoTDB
进入 $Zeppelin_HOME
并运行 Zeppelin:
# Unix/OS X
> ./bin/zeppelin-daemon.sh start
# Windows
> .\bin\zeppelin.cmd
进入 $IoTDB_HOME
并运行 IoTDB:
# Unix/OS X
> nohup sbin/start-server.sh >/dev/null 2>&1 &
or
> nohup sbin/start-server.sh -c <conf_path> -rpc_port <rpc_port> >/dev/null 2>&1 &
# Windows
> sbin\start-server.bat -c <conf_path> -rpc_port <rpc_port>
使用 Zeppelin-IoTDB 解释器
当 Zeppelin 启动后,访问 http://127.0.0.1:8080/
通过如下步骤创建一个新的笔记本页面:
- 点击
Create new node
按钮 - 设置笔记本名
- 选择解释器为 iotdb
现在可以开始使用 Zeppelin 操作 IoTDB 了。
我们提供了一些简单的 SQL 来展示 Zeppelin-IoTDB 解释器的使用:
CREATE DATABASE root.ln.wf01.wt01;
CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN;
CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=PLAIN;
CREATE TIMESERIES root.ln.wf01.wt01.hardware WITH DATATYPE=INT32, ENCODING=PLAIN;
INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
VALUES (1, 1.1, false, 11);
INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
VALUES (2, 2.2, true, 22);
INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
VALUES (3, 3.3, false, 33);
INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
VALUES (4, 4.4, false, 44);
INSERT INTO root.ln.wf01.wt01 (timestamp, temperature, status, hardware)
VALUES (5, 5.5, false, 55);
SELECT *
FROM root.ln.wf01.wt01
WHERE time >= 1
AND time <= 6;
样例如下:
用户也可以参考 [1] 编写更丰富多彩的文档。
以上样例放置于 $IoTDB_HOME/zeppelin-interpreter/Zeppelin-IoTDB-Demo.zpln
解释器配置项
进入页面 http://127.0.0.1:8080/#/interpreter 并配置 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 | 时间戳的展示格式 |