使用Tablestore(OTS)Reader同步全量數(shù)據(jù)時(shí)如何配置Split
當(dāng)使用Tablestore(OTS)Reader同步全量數(shù)據(jù)過程中出現(xiàn)同步速度較慢問題時(shí),請(qǐng)?jiān)谕侥_本中配置Split。
現(xiàn)象
使用Tablestore(OTS)Reader同步全量數(shù)據(jù)過程中出現(xiàn)同步速度較慢問題。同步腳本的配置如下:
"reader": {
"plugin": "ots",
"parameter": {
"datasource": "",
"table": "",
"column": [],
"range": {
"begin": [
{
"type": "INF_MIN"
}
],
"end": [
{
"type": "INF_MAX"
}
]
}
}
}
原因
全量數(shù)據(jù)非常大且未在同步腳本中配置Split,此時(shí)同步任務(wù)為單并發(fā)拉取數(shù)據(jù),會(huì)影響數(shù)據(jù)的同步速度。
解決方案
當(dāng)全量數(shù)據(jù)非常大時(shí),請(qǐng)?jiān)谕侥_本中配置Split。具體操作如下:
通過如下任意方式獲取Split位點(diǎn),請(qǐng)根據(jù)實(shí)際選擇。
使用Java SDK調(diào)用ComputeSplitPointsBySize接口。具體操作,請(qǐng)參見指定大小計(jì)算分片。
返回示例如下:
LowerBound:pkname1:INF_MIN, pkname2:INF_MIN UpperBound:pkname1:cbcf23c8cdf831261f5b3c052db3479e, pkname2:INF_MIN LowerBound:pkname1:cbcf23c8cdf831261f5b3c052db3479e, pkname2:INF_MIN UpperBound:pkname1:INF_MAX, pkname2:INF_MAX
下載Tablestore CLI工具后,使用
points -s splitSize -t tablename
命令獲取。具體操作,請(qǐng)參見命令行工具。說明splitSize以100 MB為單位。當(dāng)數(shù)據(jù)量較少時(shí),無需配置Split位點(diǎn);當(dāng)數(shù)據(jù)量較多時(shí),建議根據(jù)同步環(huán)境所能支持的最大并發(fā)度合理配置splitSize。
返回示例如下:
[ { "LowerBound": { "PrimaryKeys": [ { "ColumnName": "pkname1", "Value": null, "PrimaryKeyOption": 2 }, { "ColumnName": "pkname2", "Value": null, "PrimaryKeyOption": 2 } ] }, "UpperBound": { "PrimaryKeys": [ { "ColumnName": "pkname1", "Value": "cbcf23c8cdf831261f5b3c052db3479e\u0000", "PrimaryKeyOption": 0 }, { "ColumnName": "pkname2", "Value": null, "PrimaryKeyOption": 2 } ] }, "Location": "80310717938EDF503FB1E26F70710391" }, { "LowerBound": { "PrimaryKeys": [ { "ColumnName": "pkname1", "Value": "cbcf23c8cdf831261f5b3c052db3479e\u0000", "PrimaryKeyOption": 0 }, { "ColumnName": "pkname2", "Value": null, "PrimaryKeyOption": 2 } ] }, "UpperBound": { "PrimaryKeys": [ { "ColumnName": "pkname1", "Value": null, "PrimaryKeyOption": 3 }, { "ColumnName": "pkname2", "Value": null, "PrimaryKeyOption": 3 } ] }, "Location": "80310717938EDF503FB1E26F70710391" } ]
找到返回示例中第一列主鍵(即分區(qū)鍵)的Value,例如第一個(gè)LowerBound的
pkname1 = null
,第一個(gè)UpperBound的pkname1 = "cbcf23c8cdf831261f5b3c052db3479e\u0000"
,第二個(gè)LowerBound的pkname1 = "cbcf23c8cdf831261f5b3c052db3479e\u0000"
,第二個(gè)UpperBound的pkname1 = null
,則全量同步腳本中的split配置如下:"split" : [ { "type":"STRING", "value":"cbcf23c8cdf831261f5b3c052db3479e\u0000" } ]
使用上述配置時(shí),表格存儲(chǔ)會(huì)將全量數(shù)據(jù)分為
(INF_MIN,cbcf23c8cdf831261f5b3c052db3479e\u0000)
和[cbcf23c8cdf831261f5b3c052db3479e\u0000,INF_MAX)
兩個(gè)區(qū)間進(jìn)行數(shù)據(jù)并發(fā)拉取,提高同步速度。
在同步腳本中配置Split位點(diǎn)。同步腳本示例如下:
"range": { "begin": [ { "type": "INF_MIN" } ], "end": [ { "type": "INF_MAX" } ], "split": [ { "type": "STRING", "value": "splitPoint1" }, { "type": "STRING", "value": "splitPoint2" }, { "type": "STRING", "value": "splitPoint3" } ] }
配置Split位點(diǎn)后,如果同步速度仍未提升,請(qǐng)提交工單或者加入釘釘群23307953(表格存儲(chǔ)技術(shù)交流群-2)聯(lián)系表格存儲(chǔ)技術(shù)支持進(jìn)行處理。