小 T 导读:想用 Spark 对接 TDengine?保姆级教程来了。
TDengine 是由涛思数据开发并开源的一款高性能、分布式、支持 SQL 的时序数据库(Time-Series Database)。
在上一篇文章中,我们示范了如何使用 Apache Flink 连接 TDengine,使用 Apache Spark 的小伙伴们已经迫不及待地等待续集了。
相对于 Flink,Spark 对接起来就简单多了。
Spark 本身封装了 JDBC 的方法,所以我们直接使用 Spark 官网的示例代码就可以完成对接了。
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();
}
}
1) 环境准备:
a) Spark 安装&启动:
-
wget https://www.apache.org/dyn/closer.lua/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz (需复制到浏览器打开)
-
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) 打包编译:
源码位置:
3) 程序启动:
spark-submit --master local --name TDenginetest --class com.taosdata.java.SparkTest /testSpark-1.0-SNAPSHOT-dist.jar
-
读取数据 -
读取的数据直接打印在控制台 -
写入数据 -
可以查询到刚插入的数据 -
select * f rom test.meters;
👇 点击阅读原文,了解体验 TDengine!
本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。