閱讀749 返回首頁    go 阿裏雲


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="`
    • 必選:如果表為分區表,則必填。如果表為非分區表,則不能填寫
    • 默認值:無
  • 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的機器參數為:
    1. cpu : 24 Core Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz cache 15.36MB
    2. mem : 50GB
    3. net : 千兆雙網卡
    4. jvm : -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
    5. 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

說明:

  1. OdpsReader 影響速度最主要的是channel數目,這裏到達8時已經打滿網卡,過多調大反而會影響係統性能。
  2. channel數目的選擇,可以考慮odps表文件組織,可嚐試合並小文件再進行同步調優。

最後更新:2016-11-23 16:03:59

  上一篇:go PostgreSQLReader__Reader插件_使用手冊_數據集成-阿裏雲
  下一篇:go OTSReader__Reader插件_使用手冊_數據集成-阿裏雲