749
阿裏雲
ODPSReader__Reader插件_使用手冊_數據集成-阿裏雲
1 快速介紹
ODPSReader 實現了從 ODPS讀取數據的功能,有關ODPS請參看(https://wiki.aliyun-inc.com/projects/apsara/wiki/odps)。 在底層實現上,ODPSReader 根據你配置的 源頭項目 / 表 / 分區 / 表字段 等信息,通過 Tunnel從 ODPS 係統中讀取數據。
2 實現原理
ODPSReader 支持讀取分區表、非分區表,不支持讀取虛擬視圖。當要讀取分區表時,需要指定出具體的分區配置,比如讀取 t0 表,其分區為 pt=1,ds=hangzhou 那麼你需要在配置中配置該值。當要讀取非分區表時,你不能提供分區配置。表字段可以依序指定全部列,也可以指定部分列,或者調整列順序,或者指定常量字段,但是表字段中不能指定分區列(分區列不是表字段)。
3 功能說明
3.1 配置樣例
- 這裏使用一份讀出 ODPS 數據配置樣板。
{
"type": "job",
"traceId": "您可以在這裏填寫您作業的追蹤ID,建議使用業務名+您的作業ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "XXX",
"project": "project",
"table": "table",
"column": [
"*"
],
"partition": "pt=20140501/ds=*"
}
},
"writer": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "XXX",
"project": "project",
"table": "table",
"column": [
"*"
],
"partition": "pt=20140501/ds=hangzhou"
}
}
}
}
3.2 參數說明
accessId
- 描述:ODPS係統登錄ID
- 必選:是
- 默認值:無
accessKey
- 描述:ODPS係統登錄Key
- 必選:是
- 默認值:無
project
- 描述:讀取數據表所在的 ODPS 項目名稱(大小寫不敏感)
- 必選:是
- 默認值:無
table
- 描述:讀取數據表的表名稱(大小寫不敏感)
- 必選:是
- 默認值:無
partition
- 描述:讀取數據所在的分區信息,支持linux shell通配符,包括 表示0個或多個字符,?代表任意一個字符。例如現在有分區表 test,其存在 pt=1/ds=hangzhou pt=1/ds=shanghai pt=2/ds=hangzhou pt=2/ds=beijing 四個分區,如果你想讀取 pt=1/ds=shanghai 這個分區的數據,那麼你應該配置為:
"partition":"pt=1/ds=shanghai"
; 如果你想讀取 pt=1下的所有分區,那麼你應該配置為: `"partition":"pt=1/ds= ";如果你想讀取整個 test 表的所有分區的數據,那麼你應該配置為:
"partition":"pt=/ds="` - 必選:如果表為分區表,則必填。如果表為非分區表,則不能填寫
- 默認值:無
- 描述:讀取數據所在的分區信息,支持linux shell通配符,包括 表示0個或多個字符,?代表任意一個字符。例如現在有分區表 test,其存在 pt=1/ds=hangzhou pt=1/ds=shanghai pt=2/ds=hangzhou pt=2/ds=beijing 四個分區,如果你想讀取 pt=1/ds=shanghai 這個分區的數據,那麼你應該配置為:
column
描述:讀取 odps 源頭表的列信息。例如現在有表 test,其字段為:id,name,age 如果你想依次讀取 id,name,age 那麼你應該配置為:
"column":["id","name","age"]
或者配置為:"column":["*"]
這裏 表示依次讀取表的每個字段,但是我們不推薦你配置抽取字段為 ,因為當你的表字段順序調整、類型變更或者個數增減,你的任務就會存在源頭表列和目的表列不能對齊的風險,會直接導致你的任務運行結果不正確甚至運行失敗。如果你想依次讀取 name,id 那麼你應該配置為:"coulumn":["name","id"]
如果你想在源頭抽取的字段中添加常量字段(以適配目標表的字段順序),比如你想抽取的每一行數據值為 age 列對應的值,name列對應的值,常量日期值1988-08-08 08:08:08,id 列對應的值 那麼你應該配置為:"column":["age","name","'1988-08-08 08:08:08'","id"]
即常量列首尾用符號'
包住即可,我們內部實現上識別常量是通過檢查你配置的每一個字段,如果發現有字段首尾都有'
,則認為其是常量字段,其實際值為去除'
之後的值。注意:ODPSReader 抽取數據表不是通過 ODPS 的 Select SQL語句,所以不能在字段上指定函數,也不能指定分區字段名稱(分區字段不屬於表字段)column必須用戶顯示指定同步的列集合,不允許為空!
必選:是
默認值:無
accountProvider [待定]
- 描述:讀取時使用的 ODPS 賬號類型。目前支持 aliyun/taobao 兩種類型。默認為 aliyun,可不填
- 必選:否
- 默認值:aliyun
3.3 類型轉換
下麵列出 ODPSReader 讀出類型與 CDP 內部類型的轉換關係:
ODPS 數據類型 | CDP 內部類型 |
---|---|
BIGINT | Long |
DOUBLE | Double |
STRING | String |
DATETIME | Date |
Boolean | Bool |
4 性能報告(線上環境實測)
4.1 環境準備
4.1.1 數據特征
建表語句:
use cdo_datasync;
create table CDP3_odpswriter_perf_10column_1kb_00(
s_0 string,
bool_1 boolean,
bi_2 bigint,
dt_3 datetime,
db_4 double,
s_5 string,
s_6 string,
s_7 string,
s_8 string,
s_9 string
)PARTITIONED by (pt string,year string);
單行記錄類似於:
s_0 : 485924f6ab7f272af361cd3f7f2d23e0d764942351#$%^&fdafdasfdas%%^(*&^^&*
bool_1 : true
bi_2 : 1696248667889
dt_3 : 2013-07-0600: 00: 00
db_4 : 3.141592653578
s_5 : 100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11209
s_6 : 100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11fdsafdsfdsa209
s_7 : 100DAFDSAFDSAHOFJDPSAWIFDISHAF;dsadsafdsahfdsajf;dsfdsa;FJDSAL;11209
s_8 : 100dafdsafdsahofjdpsawifdishaf;DSADSAFDSAHFDSAJF;dsfdsa;fjdsal;11209
s_9 : 12~!2345100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11209
4.1.2 機器參數
- 執行CDP的機器參數為:
- cpu : 24 Core Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz cache 15.36MB
- mem : 50GB
- net : 千兆雙網卡
- jvm : -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
- disc: CDP 數據不落磁盤,不統計此項
4.2 測試報告
並發任務數 | CDP速度(Rec/s) | CDP流量(MB/S) | 網卡流量(MB/S) | CDP運行負載 |
---|---|---|---|---|
1 | 117507 | 50.20 | 53.7 | 0.62 |
2 | 232976 | 99.54 | 108.1 | 0.99 |
4 | 387382 | 165.51 | 181.3 | 1.98 |
5 | 426054 | 182.03 | 202.2 | 2.35 |
6 | 434793 | 185.76 | 204.7 | 2.77 |
8 | 495904 | 211.87 | 230.2 | 2.86 |
16 | 501596 | 214.31 | 234.7 | 2.84 |
32 | 501577 | 214.30 | 234.7 | 2.99 |
64 | 501625 | 214.32 | 234.7 | 3.22 |
說明:
- OdpsReader 影響速度最主要的是channel數目,這裏到達8時已經打滿網卡,過多調大反而會影響係統性能。
- channel數目的選擇,可以考慮odps表文件組織,可嚐試合並小文件再進行同步調優。
最後更新:2016-11-23 16:03:59
上一篇:
PostgreSQLReader__Reader插件_使用手冊_數據集成-阿裏雲
下一篇:
OTSReader__Reader插件_使用手冊_數據集成-阿裏雲
阿裏雲自研數據庫下周將相,“去IOE”使命完成
查詢請求緩存命中率__資源監控接口_API 手冊_CDN-阿裏雲
FTP數據源配置__數據源配置_數據同步手冊_用戶操作指南_大數據開發套件-阿裏雲
設置靜態網站托管__管理存儲空間_控製台用戶指南_對象存儲 OSS-阿裏雲
構建容器鏡像__構建管理_用戶指南_容器服務-阿裏雲
詞匯表___專有網絡 VPC-阿裏雲
靜態網站托管__開發人員指南_對象存儲 OSS-阿裏雲
證書相關__常見問題_CDN-阿裏雲
MQ Java SDK 日誌找不到問題分析__技術分享_技術運維問題_消息隊列 MQ-阿裏雲
跨阿裏雲賬號RDS實時同步__實時同步_用戶指南_數據傳輸-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲