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

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

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

1、介紹

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

TDengine30Reader 提供的功能:

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

TDengine30Writer 支持的功能:

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

2、實(shí)現(xiàn)原理

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

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

3、使用方法

3.1 環(huán)境準(zhǔn)備

(1)需要安裝 TDengine 客戶端

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

(3)需要安裝 Python 環(huán)境(運(yù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í)序數(shù)據(jù)的遷移配置

以一個(gè)從 OpenTSDB 到 TDengine 3.0 版本的數(shù)據(jù)遷移任務(wù)為例,配置文件 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
       }
     }
   }
 } 

配置說(shuō)明:

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

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

以一個(gè)從 MySQL 到 TDengine 3.0 版本的數(shù)據(jù)遷移任務(wù)為例,配置文件 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
       }
     }
   }
 } 

配置說(shuō)明:

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

3.3.3 TDengine 之間的遷移配置

以一個(gè)從 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
       }
     }
   }
 } 

配置說(shuō)明:

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

3.4 執(zhí)行遷移任務(wù)

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

python bin/datax.py job/opentsdb2tdengine.json

4、限制條件

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

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

5、FAQ

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

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

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

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

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

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

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

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

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

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