312
魔獸
OTSWriter__Writer插件_使用手冊_數據集成-阿裏雲
1 快速介紹
OTSWriter插件實現了向OTS寫入數據,目前支持兩種寫入方式:
- PutRow,對應於OTS API PutRow,插入數據到指定的行,如果該行不存在,則新增一行;若該行存在,則覆蓋原有行。
- UpdateRow,對應於OTS API UpdateRow,更新指定行的數據,如果該行不存在,則新增一行;若該行存在,則根據請求的內容在這一行中新增、修改或者刪除指定列的值。
OTS是構建在阿裏雲飛天分布式係統之上的 NoSQL數據庫服務,提供海量結構化數據的存儲和實時訪問。OTS 以實例和表的形式組織數據,通過數據分片和負載均衡技術,實現規模上的無縫擴展。
2 實現原理
簡而言之,OTSWriter通過OTS官方Java SDK連接到OTS服務端,並通過SDK寫入OTS服務端。OTSWriter本身對於寫入過程做了很多優化,包括寫入超時重試、異常寫入重試、批量提交等Feature。
3 功能說明
3.1 配置樣例
- 配置一個寫入OTS作業:
{
"type": "job",
"traceId": "您可以在這裏填寫您作業的追蹤ID,建議使用業務名+您的作業ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "mysql",
"parameter": {}
},
"writer": {
"plugin": "ots",
"parameter": {
"endpoint": "",
"accessId": "",
"accessKey": "",
"instanceName": "",
"table": "",
"primaryKey": [
{
"name": "pk1",
"type": "string"
},
{
"name": "pk2",
"type": "int"
}
],
"column": [
{
"name": "col2",
"type": "INT"
},
{
"name": "col3",
"type": "STRING"
},
{
"name": "col4",
"type": "STRING"
},
{
"name": "col5",
"type": "BINARY"
},
{
"name": "col6",
"type": "DOUBLE"
}
],
"writeMode": "PutRow"
}
}
}
}
3.2 參數說明
- endpoint
- 描述:OTS Server的EndPoint(服務地址),例如https://bazhen.cn−hangzhou.ots.aliyuncs.com。
- 必選:是
- 默認值:無
- accessId
- 描述:OTS的accessId
- 必選:是
- 默認值:無
- accessKey
- 描述:OTS的accessKey
- 必選:是
- 默認值:無
- instanceName
- 描述:OTS的實例名稱,實例是用戶使用和管理 OTS 服務的實體,用戶在開通 OTS 服務之後,需要通過管理控製台來創建實例,然後在實例內進行表的創建和管理。實例是 OTS 資源管理的基礎單元,OTS 對應用程序的訪問控製和資源計量都在實例級別完成。
- 必選:是
- 默認值:無
table
- 描述:所選取的需要抽取的表名稱,這裏有且隻能填寫一張表。在OTS不存在多表同步的需求。
- 必選:是
- 默認值:無
primaryKey
描述: OTS的主鍵信息,使用JSON的數組描述字段信息。OTS本身是NoSQL係統,在OTSWriter導入數據過程中,必須指定相應地字段名稱。
OTS的PrimaryKey隻能支持STRING,INT兩種類型,因此OTSWriter本身也限定填寫上述兩種類型。
CDP本身支持類型轉換的,因此對於源頭數據非String/Int,OTSWriter會進行數據類型轉換。
配置實例:
"primaryKey" : [ {"name":"pk1", "type":"string"}, {"name":"pk2", "type":"int"} ],
必選:是
默認值:無
column
描述:所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息。使用格式為
{"name":"col2", "type":"INT"},
其中的name指定寫入的OTS列名,type指定寫入的類型。OTS類型支持STRING,INT,DOUBLE,BOOL和BINARY幾種類型 。
寫入過程不支持常量、函數或者自定義表達式。
必選:是
默認值:無
writeMode
- 描述:寫入模式,目前支持兩種模式,
- PutRow,對應於OTS API PutRow,插入數據到指定的行,如果該行不存在,則新增一行;若該行存在,則覆蓋原有行。
- UpdateRow,對應於OTS API UpdateRow,更新指定行的數據,如果該行不存在,則新增一行;若該行存在,則根據請求的內容在這一行中新增、修改或者刪除指定列的值。
- 必選:是
- 默認值:無
- 描述:寫入模式,目前支持兩種模式,
3.3 類型轉換
目前OTSWriter支持所有OTS類型,下麵列出OTSWriter針對OTS類型轉換列表: |CDP內部類型 | OTS 數據類型 | | ---------- | -------- | | Long | Integer | | Double | Double | | String | String | | Boolean | Boolean | | Bytes | Binary |
- 注意,OTS本身不支持日期型類型。應用層一般使用Long報錯時間的Unix TimeStamp。
4 性能報告
4.1 環境準備
4.1.1 數據特征
2列PK(10 + 8),15列String(10 Byte), 2兩列Integer(8 Byte),算上Column Name每行大概327Byte,每次BatchWriteRow寫入100行數據,所以當個請求的數據大小是32KB。
4.1.2 機器參數
OTS端:3台前端機,5台後端機
CDP運行端: 24核CPU, 98GB內存
4.2 測試報告
並發數 | CDP CPU | CDP流量 | OTS 流量 | BatchWrite前端QPS | BatchWriteRow前端延時 |
---|---|---|---|---|---|
40 | 1027% | Speed 22.13MB/s, 112640 records/s | 65.8M/s | 42 | 153ms |
50 | 1218% | Speed 24.11MB/s, 122700 records/s | 73.5M/s | 47 | 174ms |
60 | 1355% | Speed 25.31MB/s, 128854 records/s | 78.1M/s | 50 | 190ms |
70 | 1578% | Speed 26.35MB/s, 134121 records/s | 80.8M/s | 52 | 210ms |
80 | 1771% | Speed 26.55MB/s, 135161 records/s | 82.7M/s | 53 | 230ms |
5 約束限製
5.1 寫入冪等性
OTS寫入本身是支持冪等性的,也就是使用OTS SDK同一條數據寫入OTS係統,一次和多次請求的結果可以理解為一致的。因此對於OTSWriter多次嚐試寫入同一條數據與寫入一條數據結果是等同的。
5.2 單任務FailOver
由於OTS寫入本身是冪等性的,因此可以支持單任務FailOver。即一旦寫入Fail,CDP會重新啟動相關子任務進行重試。
最後更新:2016-11-23 16:03:59
上一篇:
ODPSWriter__Writer插件_使用手冊_數據集成-阿裏雲
下一篇:
DRDSWriter__Writer插件_使用手冊_數據集成-阿裏雲
容器監控服務__日誌和監控_用戶指南_容器服務-阿裏雲
阿裏雲棲大會上 “達摩院”吸睛了!
ReservedThroughput__DataType_API 參考_表格存儲-阿裏雲
SDK接口簡介__數據訂閱_用戶指南_數據傳輸-阿裏雲
TableMeta__DataType_API 參考_表格存儲-阿裏雲
圖片上傳__老版圖片服務手冊_對象存儲 OSS-阿裏雲
如何添加成員__平台介紹_數加平台介紹-阿裏雲
阿裏雲發布自研商用關係型數據庫POLARDB
搜索指定發布信息__發布管理相關接口_Open API_消息隊列 MQ-阿裏雲
添加域名__域名操作_產品使用手冊_雲解析-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲