Apache IoTDB开发系统整合之Spark IoTDB Connecter

本文涉及的产品
物联网平台,标准版 1个月
IoT设备身份认证,上限1000台 1个月
简介: 以下 TsFile 结构为例: TsFile 架构中有三个度量:状态、温度和硬件。
+关注继续查看

version

The versions required for Spark and Java are as follow:

Spark VersionScala VersionJava VersionTsFile
2.4.32.111.80.10.0

install

mvn clean scala:compile compile install.

1. maven dependency

  1. <dependency>
  2. <groupId>org.apache.iotdb</groupId>
  3. <artifactId>spark-iotdb-connector</artifactId>
  4. <version>0.10.0</version>
  5. </dependency>

2. spark-shell user guide

  1. spark-shell --jars spark-iotdb-connector-0.10.0.jar,iotdb-jdbc-0.10.0-jar-with-dependencies.jar
  2. import org.apache.iotdb.spark.db._
  3. val df = spark.read.format("org.apache.iotdb.spark.db").option("url","jdbc:iotdb://127.0.0.1:6667/").option("sql","select * from root").load
  4. df.printSchema()
  5. df.show()

如果要对RDD进行分区,可以执行以下操作

  1. spark-shell --jars spark-iotdb-connector-0.10.0.jar,iotdb-jdbc-0.10.0-jar-with-dependencies.jar
  2. import org.apache.iotdb.spark.db._
  3. val df = spark.read.format("org.apache.iotdb.spark.db").option("url","jdbc:iotdb://127.0.0.1:6667/").option("sql","select * from root").
  4. option("lowerBound", [lower bound of time that you want query(include)]).option("upperBound", [upper bound of time that you want query(include)]).
  5. option("numPartition", [the partition number you want]).load
  6. df.printSchema()
  7. df.show()

3. 模式推理

以下 TsFile 结构为例: TsFile 架构中有三个度量:状态、温度和硬件。这三项测量的基本信息如下:

NameTypeEncode
statusBooleanPLAIN
temperatureFloatRLE
hardwareTextPLAIN

The existing data in the TsFile is as follows:

device:root.ln.wf01.wt01device:root.ln.wf02.wt02
statustemperaturehardwarestatus
timevaluetimevaluetimevaluetimevalue
1True12.22“aaa”1True
3True22.24“bbb”2False
5False32.16“ccc”4True

The wide(default) table form is as follows:

timeroot.ln.wf02.wt02.temperatureroot.ln.wf02.wt02.statusroot.ln.wf02.wt02.hardwareroot.ln.wf01.wt01.temperatureroot.ln.wf01.wt01.statusroot.ln.wf01.wt01.hardware
1nulltruenull2.2truenull
2nullfalseaaa2.2nullnull
3nullnullnull2.1truenull
4nulltruebbbnullnullnull
5nullnullnullnullfalsenull
6nullnullcccnullnullnull

You can also use narrow table form which as follows: (You can see part 4 about how to use narrow form)

timedevice_namestatushardwaretemperature
1root.ln.wf02.wt01truenull2.2
1root.ln.wf02.wt02truenullnull
2root.ln.wf02.wt01nullnull2.2
2root.ln.wf02.wt02falseaaanull
3root.ln.wf02.wt01truenull2.1
4root.ln.wf02.wt02truebbbnull
5root.ln.wf02.wt01falsenullnull
6root.ln.wf02.wt02nullcccnull

4. 宽表和窄表之间的转换

从宽到窄

  1. import org.apache.iotdb.spark.db._
  2. val wide_df = spark.read.format("org.apache.iotdb.spark.db").option("url", "jdbc:iotdb://127.0.0.1:6667/").option("sql", "select * from root where time < 1100 and time > 1000").load
  3. val narrow_df = Transformer.toNarrowForm(spark, wide_df)

从窄到宽

  1. import org.apache.iotdb.spark.db._
  2. val wide_df = Transformer.toWideForm(spark, narrow_df)

5. Java 用户指南

  1. import org.apache.spark.sql.Dataset;
  2. import org.apache.spark.sql.Row;
  3. import org.apache.spark.sql.SparkSession;
  4. import org.apache.iotdb.spark.db.*
  5. public class Example {
  6. public static void main(String[] args) {
  7. SparkSession spark = SparkSession
  8. .builder()
  9. .appName("Build a DataFrame from Scratch")
  10. .master("local[*]")
  11. .getOrCreate();
  12. Dataset<Row> df = spark.read().format("org.apache.iotdb.spark.db")
  13. .option("url","jdbc:iotdb://127.0.0.1:6667/")
  14. .option("sql","select * from root").load();
  15. df.printSchema();
  16. df.show();
  17. Dataset<Row> narrowTable = Transformer.toNarrowForm(spark, df)
  18. narrowTable.show()
  19. }
  20. }
相关文章
|
6天前
|
Dubbo 应用服务中间件 Apache
电子好书发您分享《Apache Dubbo 微服务开发从入门到精通》
电子好书发您分享《Apache Dubbo 微服务开发从入门到精通》
19 1
|
2月前
|
SQL Java Apache
[1.2.0新功能系列:三]Apache doris 1.2.0 Java UDF 函数开发及使用
[1.2.0新功能系列:三]Apache doris 1.2.0 Java UDF 函数开发及使用
43 0
|
3月前
|
存储 分布式计算 Hadoop
Apache IoTDB开发系统整合之TsFile-Spark-Connector
TsFile-Spark-Connector 可以在 SparkSQL By SparkSQL 中将一个或多个 TsFiles 显示为表。它还允许用户指定单个目录或使用通配符来匹配多个目录。如果有多个 TsFiles,则所有 TsFiles 中测量值的并集将保留在表中,并且默认情况下,具有相同名称的度量将具有相同的数据类型。
|
3月前
|
存储 Java 数据库连接
Apache IoTDB开发之Load External TsFile工具
加载外部 tsfile 工具允许用户从正在运行的 Apache IoTDB 实例加载 tsfiles、删除 tsfile 或将 tsfile 移动到目标目录。默认情况下,将创建架构。当tsfile对应的存储组不存在时,用户可以通过第四个参数设置存储组的级别。默认情况下,它将使用 中设置的存储组级别。如果该文件对应的文件存在,则会加载到 Apache IoTDB 的数据目录和引擎中。
|
3月前
|
存储 缓存 监控
Apache IoTDB开发之运维和监控工具
目前,IoTDB为用户提供了使用Java的JConsole工具来监控系统状态或使用IoTDB的开放API来检查数据状态。启动JConsole工具并连接到IoTDB服务器后,咱们大家就可以基本了解IoTDB系统状态,包括CPU占用,内存信息等。
154 0
|
3月前
|
算法 Apache 数据安全/隐私保护
Apache IoTDB开发之Watermark工具
Watermark工具有两个功能:IoTDB查询结果的Watermark嵌入和可疑数据的Watermark检测。
|
3月前
|
数据可视化 Java 物联网
Apache IoTDB开发之JMX 工具
Java VisualVM 是一个工具,它提供了一个可视化界面,用于在 Java 虚拟机 (JVM) 上运行时查看有关 Java 应用程序的详细信息,以及对这些应用程序进行故障排除和分析。
|
3月前
|
存储 Linux Apache
Apache IoTDB开发之内存工具
IoTDB中的内存分为三部分:写内存,读内存和保留内存。写内存用于数据写入分配。三者的比例可以在配置文件中设置。
|
3月前
|
存储 Linux Apache
Apache IoTDB开发之同步工具
在同步的发送端,同步模块是一个单独的进程,独立于 IoTDB 进程。同步的频率周期可以由用户设置。在同步的接收端,同步模块嵌入在IoTDB的引擎中,与IoTDB处于同一过程。接收器模块侦听一个单独的端口,该端口可由用户设置(有关详细信息,请参阅部分)。在使用之前,需要在同步接收器处设置白名单,以网段表示。接收方仅接受从位于白名单段中的发送方传输的数据。
Apache IoTDB开发之同步工具
|
3月前
|
存储 物联网 数据管理
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(12)
现在到了使用Apache IoTDB进行IoT相关开发的架构设计与功能实现的最后一个环境,在本文中我将向大家介绍IoTDB的查询语言。IoTDB为咱们广大开发者提供了类似SQL的查询语言,用于与IoTDB进行交互,查询语言可以分为4个主要部分:架构语句、数据管理语句、数据库管理语句、功能。
相关产品
物联网平台
物联网边缘计算
IoT设备身份认证
推荐文章
更多
推荐镜像
更多