目錄
一、背景
二、報(bào)錯(cuò)
三、定位原因
四、解決辦法
1.修改文件datax/conf/core.json
2.json內(nèi)容中刪除總限速的配置
五、參數(shù)說明
六、DataX提速優(yōu)化
1.提升每個(gè)channel的速度
2.提升job內(nèi)Channel并發(fā)有三種配置方式
3.提高JVM堆內(nèi)存?
一、背景
使用datax從pg同步數(shù)據(jù)到hive發(fā)生報(bào)錯(cuò)
datax自定義json內(nèi)容如下:
{
"job": {
"setting": {
"speed": {
"channel": 3,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "postgresqlreader",
"parameter": {
"username": "username",
"password": "password",
"column": [
"\"id\"",
"\"timestamp\""
],
"splitPk": "",
"connection": [
{
"table": [
"table_name"
],
"jdbcUrl": [
"jdbc:ip:port/db"
]
}
]
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://ip:port",
"fileType": "orc",
"path": "/user/hive/warehouse/db_name.db/table_name",
"fileName": "table_name",
"writeMode": "append",
"fieldDelimiter": "\t",
"encoding": "utf-8",
"column": [
{
"name": "id",
"type": "bigint"
},
{
"name": "timestamp",
"type": "bigint"
}
]
}
}
}
]
}
}
二、報(bào)錯(cuò)
[DataX引擎配置錯(cuò)誤,該問題通常是由于DataX安裝錯(cuò)誤引起,請(qǐng)聯(lián)系您的運(yùn)維解決 .]. ?- 在有總bps限速條件下,單個(gè)channel的bps值不能為空,也不能為非正數(shù)
?
三、定位原因
很明顯,error信息里面也說了,DataX的配置有問題,單個(gè)channel的bps值不能為空,也不能為非正數(shù)
四、解決辦法
1.修改文件datax/conf/core.json
修改core -> transport -> channel -> speed -> "byte":?-1
"core": {
"dataXServer": {
"address": "http://localhost:7001/api",
"timeout": 10000,
"reportDataxLog": false,
"reportPerfLog": false
},
"transport": {
"channel": {
"class": "com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
"speed": {
"byte": -1,
"record": -1
},
"flowControlInterval": 20,
"capacity": 512,
"byteCapacity": 67108864
},
"exchanger": {
"class": "com.alibaba.datax.core.plugin.BufferedRecordExchanger",
"bufferSize": 32
}
},
}
2.json內(nèi)容中刪除總限速的配置
偷懶的方法,小白可以這么用
"setting": {
? ? ? "speed": {
? ? ? ? "channel": 3
? ? ? }
?
五、參數(shù)說明
關(guān)鍵參數(shù)
-
job.setting.speed.channel : channel并發(fā)數(shù)
-
job.setting.speed.record : 全局配置channel的record限速
-
job.setting.speed.byte:全局配置channel的byte限速
-
core.transport.channel.speed.record:?jiǎn)蝹€(gè)channel的record限速
-
core.transport.channel.speed.byte:?jiǎn)蝹€(gè)channel的byte限速
六、DataX提速優(yōu)化
1.提升每個(gè)channel的速度
2.提升job內(nèi)Channel并發(fā)有三種配置方式
-
bps限速:配置全局Byte限速以及單Channel Byte限速(Channel個(gè)數(shù) = 全局Byte限速 / 單Channel Byte限速)
總bps限速通過job.setting.speed.byte設(shè)置,在job.json中。 單個(gè)channel的bps值通過core.transport.channel.speed.byte設(shè)置,在core.json中,默認(rèn)為-1。 如果設(shè)置了總bps限速,那單個(gè)channel的bps值不能為空,也不能為非正數(shù)。 channel的數(shù)量=總bps限速/單個(gè)channel的bps值。 比如總bps限速為100,單個(gè)channel的bps為10,那channel的數(shù)量就是100/10=10個(gè)
-
tps限速:配置全局Record限速以及單Channel Record限速(Channel個(gè)數(shù) = 全局Record限速 / 單Channel Record限速)
總tps限速通過job.setting.speed.record設(shè)置,在job.json中。 單個(gè)channel的tps值通過core.transport.channel.speed.record設(shè)置,在core.json中,默認(rèn)為-1。 如果設(shè)置了總tps限速,那單個(gè)channel的tps值不能為空,也不能為非正數(shù)。 channel的數(shù)量=總tps限速/單個(gè)channel的tps值。 比如總tps限速為200,單個(gè)channel的tps為40,那channel的數(shù)量就是200/40=5個(gè)。
-
直接配置Channel個(gè)數(shù)
通過job.setting.speed.channel直接設(shè)置。 比如這個(gè)值設(shè)置為5,那channel的數(shù)量就是5個(gè)。
3.提高JVM堆內(nèi)存?
python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" XXX.json
優(yōu)先級(jí)
如果以上三個(gè)都設(shè)置了,那以哪個(gè)為主呢?
如果bps限速和tps限速?zèng)]有設(shè)置,那channel的數(shù)量默認(rèn)都是Integer.MAX_VALUE。
如果bps限速和tps限速都設(shè)置了,那誰比較小,以哪個(gè)為主。
比如上面的例子,tps的channel個(gè)數(shù)5小于bps的channel個(gè)數(shù)10,那channel的個(gè)數(shù)最終為5。
如果bps限速和tps限速只設(shè)置了一個(gè),那以設(shè)置的那個(gè)為準(zhǔn),因?yàn)闆]設(shè)置的那個(gè)默認(rèn)Integer.MAX_VALUE,肯定大于設(shè)置的那個(gè),所以取小的數(shù)就是設(shè)置的那個(gè)。
如果bps限速和tps限速都沒有設(shè)置,那才讀取直接設(shè)置的值,也就是說,直接設(shè)置的優(yōu)先級(jí)最低。文章來源:http://www.zghlxwxcb.cn/news/detail-640966.html
如果都沒有設(shè)置,那直接拋異常,也就是說,必須設(shè)置Job運(yùn)行速度。文章來源地址http://www.zghlxwxcb.cn/news/detail-640966.html
到了這里,關(guān)于[DataX引擎配置錯(cuò)誤,該問題通常是由于DataX安裝錯(cuò)誤引起,請(qǐng)聯(lián)系您的運(yùn)維解決 .]. - 在有總bps限速條件下,單個(gè)channel的bps值不能為空,也不能為非正數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!