无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

【技術干貨】代碼示例:使用 Apache Spark 連接 TDengine

Yiqing Liu

2022-05-30 / ,

小 T 導讀:想用 Spark 對接 TDengine?保姆級教程來了。

0、前言

TDengine 是由濤思數據開發并開源的一款高性能、分布式、支持 SQL 的時序數據庫(Time-Series Database)。

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

相對于 Flink,Spark 對接起來就簡單多了。

【技術干貨】代碼示例:使用 Apache Spark 連接 TDengine - TDengine Database 時序數據庫

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?
  • 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) 打包編譯:

源碼位置:

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 的方式來進行讀寫,我們無需做更多適配,數據接入可以做到無縫銜接。