六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

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

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

0、前言

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

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

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

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

1、技術(shù)實現(xiàn)

Spark 本身封裝了 JDBC 的方法,所以我們直接使用 Spark 官網(wǎng)的示例代碼就可以完成對接了。

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) {
               // 數(shù)據(jù)庫配置
               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") // 設(shè)置應(yīng)用名稱
                               .master("local") // 本地單線程運行
                               .getOrCreate();

               // 創(chuàng)建DataFrame
               Dataset<Row> df = sparkSession
                               .read() // 返回一個DataFrameReader,可用于將非流數(shù)據(jù)作為DataFrame讀取
                               .format("jdbc") // JDBC數(shù)據(jù)源
                               .option("url", url)
                               .option("driver", driver)
                               .option("query", "select * from tt.meters limit 100") // 二選一,sql語句或者表
                               .load();

               // 將DataFrame的內(nèi)容顯示
               df.show();
               
               
               df.write() // 返回一個DataFrameWriter,可用于將DataFrame寫入外部存儲系統(tǒng)
                               .format("jdbc") // JDBC數(shù)據(jù)源
                               .mode(SaveMode.Append) // 如果第一次生成了,后續(xù)會追加
                               .option("url", url)
                               .option("driver", driver)
                               .option("dbtable", "test.meters") // 表名
                               .save();


               sparkSession.stop();

        }
}

3、簡單測試 JNI 讀寫

1) 環(huán)境準(zhǔn)備:

a) Spark 安裝&啟動:

b) TDengine Database 環(huán)境準(zhǔn)備:

  • 創(chuàng)建原始數(shù)據(jù):?
    • create database tt;
    • create table tt.meters (ts TIMESTAMP,vol INT) ;
    • insert into meters values(now,220);
  • 創(chuàng)建目標(biāo)數(shù)據(jù)庫表:?
    • 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

  • 讀取數(shù)據(jù) 
    • 讀取的數(shù)據(jù)直接打印在控制臺
  • 寫入數(shù)據(jù) 
    • select * from test.meters; 
      • 可以查詢到剛插入的數(shù)據(jù)

4、小結(jié)

Spark 本身支持 JDBC 的方式來進(jìn)行讀寫,我們無需做更多適配,數(shù)據(jù)接入可以做到無縫銜接。