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

基于 DataX 的 TDengine 3.0 版本數(shù)據(jù)遷移工具

基于 DataX,我們實現(xiàn)了 TDengine Database 的數(shù)據(jù)遷移工具,目前可以做到 OpenTSDB、MySQL、TDengine(Time Series DataBase,TSDB) 等不同數(shù)據(jù)源之間的數(shù)據(jù)遷移。這篇文章的目的是,讓用戶能夠快速了解如何使用這個數(shù)據(jù)遷移工具。

1、介紹

基于 DataX,我們完成了 TDengine 的適配,對于 TDengine 3.0 版本,實現(xiàn)了 TDengine30Reader 和 TDengine30Writer 兩個插件。

TDengine30Reader 提供的功能:

  1. 支持通過 SQL 進行數(shù)據(jù)篩選;
  2. 根據(jù)時間間隔進行任務切分;
  3. 支持 TDengine 的全部數(shù)據(jù)類型;
  4. 支持批量讀取,通過 batchSize 參數(shù)控制批量拉取結(jié)果集的大小,提高讀取性能。

TDengine30Writer 支持的功能:

  1. 支持 OpenTSDB 的 json 格式的行協(xié)議,使用 TDengine 的 schemaless 方式寫入 TDengine。
  2. 支持批量寫入,通過 batchSize 參數(shù)控制批量寫入的數(shù)量,提高寫入性能。

2、實現(xiàn)原理

TDengine30Reader:使用 JNI 方式從 TDengine 拉取數(shù)據(jù)。

TDengine30Writer:使用 JNI 方式寫數(shù)據(jù)到 TDengine。對 OpenTSDB 等使用 schemaless 寫入,對于 MySQL 等關系型數(shù)據(jù)庫,使用批量 stmt 寫入。

3、使用方法

3.1 環(huán)境準備

(1)需要安裝 TDengine 客戶端

(2)需要安裝 JDK 1.8 環(huán)境(運行 DataX)

(3)需要安裝 Python 環(huán)境(運行 DataX)

(4)需要 maven 編譯環(huán)境(如果不編譯 DataX 則可以不安裝 maven)

3.2 安裝

下載源碼

git clone https://github.com/taosdata/DataX.git

編譯打包

cd DataX
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

安裝

cp target/datax.tar.gz your_install_dir
cd your_install_dir
tar -zxvf dataX.tar.gz

3.3 數(shù)據(jù)遷移 Job 的配置

3.3.1 時序數(shù)據(jù)的遷移配置

以一個從 OpenTSDB 到 TDengine 3.0 版本的數(shù)據(jù)遷移任務為例,配置文件 opentsdb2tdengine.json 如下:

 {
   "job":{
     "content":[{
       "reader": {
         "name": "opentsdbreader",
         "parameter": {
           "endpoint": "http://192.168.1.180:4242",
           "column": ["weather_temperature"],
           "beginDateTime": "2021-01-01 00:00:00",
           "endDateTime": "2021-01-01 01:00:00"
         }
       },
     "writer": {
       "name": "tdengine30writer",
       "parameter": {
            "username": "root",
            "password": "taosdata",
            "connection": [
              {
                "table": [
                  "matric1"
                ],
                "jdbcUrl": "jdbc:TAOS://192.168.1.101:6030/test?timestampFormat=TIMESTAMP"
              }
            ],
            "batchSize": 1000,
            "ignoreTagsUnmatched": true
          }
       }
     }],
     "setting": {
       "speed": {
         "channel": 1
       }
     }
   }
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.180 的 OpenTSDB,到 192.168.1.101 的 TDengine 的遷移。遷移 metric 為 weather_temperature,時間從 2021-01-01 00:00:00 開始,到 2021-01-01 01:00:00 結(jié)束的數(shù)據(jù)。
  • reader 使用 datax 的 opentsdbreader,parameter 的配置請參考:opentsdbreader.md#配置參數(shù)
  • tdengine30writer 的 parameter 中,user,password 為必須項,沒有默認值。batchSize 不是必須項,默認值為 1。詳細參考:tdengine30writer.md#配置參數(shù)
  • TDengine 中,如果 dbname 指定的 database 不存在,則需要在遷移前創(chuàng)建數(shù)據(jù)庫。

3.3.2 關系型數(shù)據(jù)的遷移配置

以一個從 MySQL 到 TDengine 3.0 版本的數(shù)據(jù)遷移任務為例,配置文件 mysql2tdengine.json 如下:

 {
   "job": {
     "content": [{
       "reader": {
         "name": "mysqlreader",
         "parameter": {
           "username": "root",
           "password": "root",
           "column": ["id","name"],
           "splitPk": "id",
           "connection": [{
             "table": ["test"],
             "jdbcUrl": ["jdbc:mysql://192.168.1.101:3306/db"]
           }]
         }
       },
       "writer": {
         "name": "tdengine30writer",
         "parameter": {
           "host": "192.168.1.105",
           "port": 6030,
           "dbname": "test",
           "user": "root",
           "password": "taosdata",
           "batchSize": 1000
         }
       }
     }],
     "setting": {
       "speed": {
         "channel": 1
       }
     }
   }
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.101 的 MySQL,到 192.168.1.105 的 TDengine 的遷移。遷移 test 表中 id、name 兩列到 TDengine,使用 id 列作為任務劃分的列。
  • reader 使用 datax 的 mysqlreader,parameter 的配置請參考:mysqlreader.md

3.3.3 TDengine 之間的遷移配置

以一個從 TDengine 到 TDengine 的數(shù)據(jù)遷移為例,配置文件 tdengine2tdengine.json 如下:

 {
   "job": {
     "content": [{
       "reader": {
         "name": "tdengine30reader",
         "parameter": {
           "host": "192.168.1.82",
           "port": 6030,
           "db": "test",
           "user": "root",
           "password": "taosdata",
           "sql": "select * from weather",
           "beginDateTime": "2021-01-01 00:00:00",
           "endDateTime": "2021-01-02 00:00:00",
           "splitInterval": "1h"
         }
       },
       "writer": {
         "name": "tdengine30writer",
         "parameter": {
           "host": "192.168.1.105",‘
           "port": 6030,
           "dbname": "test",
           "user": "root",
           "password": "taosdata",
           "batchSize": 1000
         }
       }
     }],
     "setting": {
       "speed": {
         "channel": 1
       }
     }
   }
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.82 到 192.168.1.105 的 TDengine 之間的數(shù)據(jù)遷移。tdenginereader 根據(jù) sql、begieDateTime、endDateTime 過濾數(shù)據(jù),使用 splitInteval 進行任務劃分。
  • reader 使用 tdengine30reader,parameter 的配置請參考:tdengine30reader.md#配置參數(shù)

3.4 執(zhí)行遷移任務

將上面寫好的配置文件保存在 datax/job 目錄下,執(zhí)行下面的命令,啟動數(shù)據(jù)遷移任務:

python bin/datax.py job/opentsdb2tdengine.json

4、限制條件

(1)目前,DataX 自帶的 opentsdbreader 僅支持 OpenTSDB-2.3.X 版本。詳細參考:opentsdbreader#約束限制

(2)數(shù)據(jù)遷移工具依賴 TDengine 客戶端中的 libtaos.so/taos.dll/libtaos.dylib,需要與服務端對應版本的 TDengine-client。

5、FAQ

(1)如何估算一個數(shù)據(jù)遷移任務所需要的資源

DataX 的每個 reader 按照自己的 task 切分策略進行任務劃分,具體請參考 DataX 的任務調(diào)度規(guī)則。在估算資源是,需要按照數(shù)據(jù)遷移的數(shù)據(jù)量,任務切分規(guī)則和網(wǎng)絡帶寬限制等綜合考慮,最好以實際數(shù)據(jù)遷移測試結(jié)果為準。

(2)TDengine30Writer 的 batchSize 設置多大效率最高?

batchSize 是控制批量寫入的參數(shù),在獲取 batchSize 行紀錄后,TDengineWriter 會向 TDengine 發(fā)送一次寫入請求,這減少了與 TDengine 交互次數(shù),從而提高了性能。從測試結(jié)果來看,batchSize 在 500-1000 范圍內(nèi)效率最高。

(3)job 的配置中 channel 數(shù)為多少合適?

job 中的 channel 數(shù)為流量控制的參數(shù),每個 channel 都需要開辟一塊內(nèi)存,用來緩存數(shù)據(jù)。如果 channel 設置過大,會引起 OOM,所以 channel 數(shù)并不是越大越好。增加 channel 數(shù)后,需要提高 JVM 內(nèi)存大小。從測試結(jié)果來看,channel 在 1~6 的范圍內(nèi)都是合適,能夠保證 DataX 的流量最大化即可。

(4)java.sql.SQLException: TDengine ERROR (8000060b): Invalid client value

配置文件中 column 中沒有配置 tbname,此時會觸發(fā)行協(xié)議數(shù)據(jù)寫入(行協(xié)議寫入只會自動創(chuàng)建子表名,但需要提前創(chuàng)建好超級表),行協(xié)議寫入的情況下不支持 TAG 數(shù)據(jù)類型為非 NCHAR,所以此種情況有兩種解決方案:1.將 TAG 全部修改為 NCHAR 類型;2.在 Column 中配置好表名稱這樣不會觸發(fā)行協(xié)議寫入。

(5)java.sql.SQLException: TDengine ERROR (8000060b): Timestamp data out of range

配置文件中 column 中沒有配置 tbname,此時會觸發(fā)行協(xié)議數(shù)據(jù)寫入,且 TAG 全部為 NCHAR 類型,此時需要保證時間戳的一列名稱為 _ts,而不能是其他名稱(行協(xié)議寫入下,默認將最后的時間戳寫入到 _ts 一列,且不能隨意命名)。若想避免請使用 tbname 指定表名以避免觸發(fā)行協(xié)議寫入。