InfluxDbReader 插件文檔
倉(cāng)庫(kù)地址:https://gitee.com/Tooi/DataX
1 快速介紹
InfluxDbReader 實(shí)現(xiàn)了從 influxDB 讀取數(shù)據(jù)须肆。在底層實(shí)現(xiàn)上使用influxDB-java客戶端連接 influxDB 并通過(guò)SQL語(yǔ)句,執(zhí)行相應(yīng)的SQL語(yǔ)句绎晃,將數(shù)據(jù)從SQL取出。
2 實(shí)現(xiàn)原理
簡(jiǎn)而言之款票,使用 influxDB-java 客戶端建立遠(yuǎn)程連接 influxDB 拗慨,并根據(jù)用戶配置生成對(duì)應(yīng)的 SQL 語(yǔ)句,將數(shù)據(jù)從 influxDB 查詢出來(lái)寂呛,并將查詢結(jié)果封裝成抽象數(shù)據(jù)集 Record 傳遞給 writer 處理
3 功能說(shuō)明
3.1 配置樣例
- influxDB 2 stream
{
"job": {
"setting": {
"speed": {
"channel": 5
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "influxdbreader",
"parameter": {
"endpoint": "http://192.168.142.135:8086",
"username": "csb",
"password": "123456",
"database": "csb",
"measurement": "SwDevice-Data",
"column": [
"__uid__",
"__time__",
"SN",
"CCID",
"ssyy",
"status",
"errHw",
"errSw",
"temperature",
"humidity",
"voltage",
"battery"
],
"splitIntervalS": 60000000,
"beginDateTime": "2020-01-01 00:00:00",
"endDateTime": "2021-01-01 00:00:00"
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false,
"encoding": "UTF-8"
}
}
}
]
}
}
- influxDB 2 MySQL
{
"job": {
"setting": {
"speed": {
"channel": 5
},
"errorLimit": {
"record": 500,
"percentage": 0.05
}
},
"content": [
{
"reader": {
"name": "influxdbreader",
"parameter": {
"endpoint": "http://192.168.142.135:8086",
"username": "csb",
"password": "123456",
"database": "csb",
"measurement": "SwDevice-Data",
"column": [
"__uid__",
"__time__",
"SN",
"CCID",
"ssyy",
"status",
"errHw",
"errSw",
"temperature",
"humidity",
"voltage",
"battery"
],
"splitIntervalS": 60000000,
"beginDateTime": "2020-01-01 00:00:00",
"endDateTime": "2021-01-01 00:00:00"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "csb",
"password": "123456",
"writeMode": "insert",
"column": [
"id",
"createdatetime",
"SN",
"CCID",
"ssyy",
"status",
"err_hw",
"err_sw",
"temperature",
"humidity",
"voltage",
"battery"
],
"session": [],
"preSql": [],
"connection": [
{
"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/csb?useUnicode=true&characterEncoding=utf-8",
"table": [
"s_ultrasound"
]
}
]
}
}
}
]
}
}
3.2 參數(shù)說(shuō)明
-
endpoint
描述:influxDB 的 http 連接地址缤灵,http://ip:port
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
username
描述:數(shù)據(jù)源的用戶名 <br />
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
password
描述:數(shù)據(jù)源指定用戶名的密碼 <br />
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
databases
描述:需要遷移的數(shù)據(jù)庫(kù) <br />
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
measurement
描述:需要遷移的 measurement <br />
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
column
描述:配置需要遷移的列名集合伦籍,包含tag、field
必須包含 "time" 字段腮出,對(duì)應(yīng) influx 數(shù)據(jù)庫(kù)的 time 字段
支持特殊字段 "uid"帖鸦,程序會(huì)生成一個(gè)uid(UUID.randomUUID().toString())到該字段的位置(_ 項(xiàng)目需要)必選:是 <br />
默認(rèn)值:無(wú) <br />
-
splitIntervalS
描述:用于 DataX 內(nèi)部切分 Task ,單位秒(S)胚嘲,每個(gè) Task 只查詢?cè)O(shè)定好的時(shí)間段
必選:是 <br />
默認(rèn)值:無(wú) <br />
-
beginDateTime
描述:和 endDateTime 配合使用作儿,用于指定哪個(gè)時(shí)間段內(nèi)的數(shù)據(jù)點(diǎn),需要被遷移
必選:是
格式:
yyyy-MM-dd HH:mm:ss
默認(rèn)值:無(wú)
-
endDateTime
描述:和 beginDateTime 配合使用馋劈,用于指定哪個(gè)時(shí)間段內(nèi)的數(shù)據(jù)點(diǎn)攻锰,需要被遷移
必選:是
格式:
yyyy-MM-dd HH:mm:ss
默認(rèn)值:無(wú)
3.3 類型轉(zhuǎn)換
下面列出influxDBReader針對(duì)influxDB類型轉(zhuǎn)換表
DataX 內(nèi)部類型 | influxDB 數(shù)據(jù)類型 |
---|---|
String | String晾嘶,null |
Double | Double |
Boolean | bool |
Date | time |
Long | int,long |
4 性能報(bào)告
4.1 環(huán)境準(zhǔn)備
* 注意:性能測(cè)試使用虛擬機(jī)當(dāng)作遠(yuǎn)程influxDB服務(wù)器娶吞,MySQL則在宿主機(jī)運(yùn)行垒迂,該測(cè)試并不嚴(yán)謹(jǐn),如果需要更真實(shí)數(shù)據(jù)請(qǐng)自行測(cè)試
4.1.1 數(shù)據(jù)特征
數(shù)據(jù)結(jié)構(gòu):
4.1.1 測(cè)試環(huán)境
- 機(jī)器參數(shù):
- cpu:Intel(R) Core(TM) i3-9100 CPU @ 3.6GHz
- mem:8.00 GB
- disc:KINGSTON_SA400S3S1Z4
4.1.3 DataX jvm 參數(shù)
-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError