小 T 导读:想用 Spark 对接 TDengine?保姆级教程来了。
0、前言
TDengine 是由涛思数据开发并开源的一款高性能、分布式、反对 SQL 的时序数据库(Time-Series Database)。
在上一篇文章中,咱们示范了如何应用 Apache Flink 连贯 TDengine,应用 Apache Spark 的小伙伴们曾经急不可待地期待续集了。
绝对于 Flink,Spark 对接起来就简略多了。
1、技术实现
Spark 自身封装了 JDBC 的办法,所以咱们间接应用 Spark 官网的示例代码就能够实现对接了。
2、示例代码
package com.taosdata.java; import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SaveMode;import org.apache.spark.sql.SparkSession;import org.apache.spark.sql.jdbc.JdbcDialect;import org.apache.spark.sql.jdbc.JdbcDialects;public class SparkTest{ public static void main(String[] args) { // 数据库配置 String url = "jdbc:TAOS://u05:6030/tt?user=root&password=taosdata"; String driver = "com.taosdata.jdbc.TSDBDriver"; String dbtable = "t1"; SparkSession sparkSession = SparkSession.builder() .appName("DataSourceJDBC") // 设置利用名称 .master("local") // 本地单线程运行 .getOrCreate(); // 创立DataFrame Dataset<Row> df = sparkSession .read() // 返回一个DataFrameReader,可用于将非流数据作为DataFrame读取 .format("jdbc") // JDBC数据源 .option("url", url) .option("driver", driver) .option("query", "select * from tt.meters limit 100") // 二选一,sql语句或者表 .load(); // 将DataFrame的内容显示 df.show(); df.write() // 返回一个DataFrameWriter,可用于将DataFrame写入内部存储系统 .format("jdbc") // JDBC数据源 .mode(SaveMode.Append) // 如果第一次生成了,后续会追加 .option("url", url) .option("driver", driver) .option("dbtable", "test.meters") // 表名 .save(); sparkSession.stop(); }}
3、简略测试 JNI 读写
1) 环境筹备:
a) Spark 装置&启动:
- wget https://www.apache.org/dyn/cl...
- tar zxf spark-3.2.1-bin-hadoop3.2.tgz -C /usr/local
b) TDengine Database 环境筹备:
创立原始数据:
- create database tt;
- create table tt.meters (ts TIMESTAMP,vol INT) ;
- insert into meters values(now,220);
创立指标数据库表:
- create database test;
- create table test.meters (ts TIMESTAMP,vol INT) ;
2) 打包编译:
源码地位: https://github.com/liuyq-617/...
mvn clean package
3) 程序启动:
spark-submit –master local –name TDenginetest –class com.taosdata.java.SparkTest /testSpark-1.0-SNAPSHOT-dist.jar
读取数据
- 读取的数据间接打印在控制台
写入数据
- select * from test.meters;
- 能够查问到刚插入的数据
4、小结
Spark 自身反对 JDBC 的形式来进行读写,咱们无需做更多适配,数据接入能够做到无缝连接。
想理解更多 TDengine Database的具体细节,欢送大家在GitHub上查看相干源代码。