天天看點

OTSReader自己定義切分主鍵

該配置項屬于進階配置項,是使用者自己定義切配置設定置資訊,普通情況下不建議使用者使用。

适用場景通常在OTS資料存儲發生熱點,使用OTSReader自動切分的政策不能生效情況下,使用使用者自定義的切分規則。split指定是的在Begin、End區間内的切分點,且隻能是partitionKey的切分點資訊,即在split僅配置partitionKey,而不需要指定全部的PrimaryKey。

例如對一張主鍵為id01、id02的OTS進行抽取任務,主鍵是資料0~90可以配置為:

{
"job": {
       "setting": {
           "speed": {
               "byte": 1048576
           },
           "errorLimit": {
               "record": 0,
               "percentage": 0.02
           }
       },
       "content": [
           {
               "reader": {
                   "name": "otsreader-internal",
                   "parameter": {
                       "mode": "multiVersion",
                       "endpoint": "http://datax-internal.cn-hangzhou.ots.aliyuncs.com/",
                       "accessId": "xxxxxxxxxxxxxxxx",
                       "accessKey": "yyyyyyyyyyyyyy",
                       "instanceName": "datax-internal",
                       "table": "datax_ots_reader_internal_test_table",
                       "range": {
                           "begin": [
                               {
                                   "type": "INF_MIN",//主鍵id01最小值
                                   "value": ""
                               },
                               {
                                   "type": "INF_MIN",//主鍵id02最小值
                                   "value": ""
                               }
                           ],
                           "end": [
                               {
                                   "type": "INF_MAX",//指定 id01 抽取最大值
                                   "value": ""
                               },
                               {
                                   "type": "INF_MIN",//指定 id02 抽取最大值
                                   "value": ""
                               }
                           ],
                           "split": [
            // 使用者指定的切分點,如果指定了切分點,Job 将按照 begin、end 和 split 進行 Task 的切分,
           // 切分的列隻能是 Partition Key(ParimaryKey 的第一列)
           // 支援 INF_MIN, INF_MAX, STRING, INT
           
                               {
                                   "type": "int",
                                   "value": "30"
                               },
                               {
                                   "type": "int",
                                   "value": "60"
                               },
                               {
                                   "type": "int",
                                   "value": "90"
                               }
                           ]
                       },
                       "column": [
                           {
                               "name": "name"
                           },
                           {
                               "name": "mobile"
                           },
                           {
                               "name": "age"
                           },
                           {
                               "name": "salary"
                           },
                           {
                               "name": "marry"
                           }
                       ]
                   }
               },
               "writer": {
                   "name": "txtfilewriter",
                   "parameter": {}
               }
           }
       ]
   }
}