• 【技术干货】代码示例:使用 Apache Spark 连接 TDengine


    小 T 导读:想用 Spark 对接 TDengine?保姆级教程来了。

    0、前言

    TDengine 是由涛思数据开发并开源的一款高性能、分布式、支持 SQL 的时序数据库(Time-Series Database)。

    上一篇文章中,我们示范了如何使用 Apache Flink 连接 TDengine,使用 Apache Spark 的小伙伴们已经迫不及待地等待续集了。

    相对于 Flink,Spark 对接起来就简单多了。

    TDengine Database 【技术干货】代码示例:使用 Apache Spark 连接 TDengine 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 安装&启动:

    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/TD-Spark

    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上查看相关源代码。

  • 相关阅读:
    repeater 相关问题
    发布网站的步骤
    HTTP 错误 500.19- Internal Server Error 错误解决方法
    没有body怎么添加onload事件
    js 一搬问题汇总
    取值为四舍五入方法实现
    有关网站中操作数据库的几种方法的使用情况
    正式开始使用window live write 来更新使用博客园
    设置Oracle PL/SQL 时间显示格式 NLS_TIMESTAMP_FORMAT 2008-01-27 00:04:35:877000
    JSP 显示服务器上的文件/图片
  • 原文地址:https://www.cnblogs.com/taosdata/p/16326609.html
Copyright © 2020-2023  润新知