閱讀426 返回首頁    go 阿裏雲 go 技術社區[雲棲]


FtpReader__Reader插件_使用手冊_數據集成-阿裏雲

1 快速介紹

FtpReader提供了讀取遠程FTP文件係統數據存儲的能力。在底層實現上,FtpReader獲取遠程FTP文件數據,並轉換為CDP傳輸協議傳遞給Writer。本地文件內容存放的是一張邏輯意義上的二維表,例如CSV格式的文本信息。

該通道目前隻在ECS Pipeline下支持

2 功能與限製

FtpReader實現了從遠程FTP文件讀取數據並轉為CDP協議的功能,遠程FTP文件本身是無結構化數據存儲,對於CDP而言,FtpReader實現上類比TxtFileReader,有諸多相似之處。目前FtpReader支持功能如下:

  1. 支持且僅支持讀取TXT的文件,且要求TXT中shema為一張二維表。
  2. 支持類CSV格式文件,自定義分隔符。
  3. 支持多種類型數據讀取(使用String表示),支持列裁剪,支持列常量
  4. 支持遞歸讀取、支持文件名過濾。
  5. 支持文本壓縮,現有壓縮格式為gzip、bzip2。
  6. 多個File可以支持並發讀取。

我們暫時不能做到:

  1. 單個File支持多線程並發讀取,這裏涉及到單個File內部切分算法。二期考慮支持。
  2. 單個File在壓縮情況下,從技術上無法支持多線程並發讀取。

3 功能說明

3.1 配置樣例
{
    "type": "job",
    "traceId": "ftp to stream job test",
    "version": "1.0",
    "configuration": {
        "reader": {
            "plugin": "ftp",
            "parameter": {
                "host": "10.101.86.94",
                "port": "21",
                "username": "xxxx",
                "password": "xxxx",
                "protocol": "ftp",
                "compress": "",
                "skipHeader": "false",
                "nullFormat": "null",
                "path": [
                    "/home/hanfa.shf/ftproot/*"
                ],
                "encoding": "UTF-8",
                "column": [
                    {
                        "index": 0,
                        "type": "long"
                    },
                    {
                        "index": 1,
                        "type": "boolean"
                    },
                    {
                        "index": 2,
                        "type": "double"
                    },
                    {
                        "index": 3,
                        "type": "string"
                    },
                    {
                        "index": 4,
                        "type": "date",
                        "format": "yyyy.MM.dd"
                    }
                ],
                "fieldDelimiter": ","
            }
        },
        "writer": {
            "plugin": "stream",
            "parameter": {
                "print": true
            }
        }
    }
}
3.2 參數說明
  • protocol

    • 描述:ftp服務器協議,目前支持傳輸協議有ftp和sftp。
    • 必選:是
    • 默認值:無
  • host

    • 描述:ftp服務器地址。
    • 必選:是
    • 默認值:無
  • port

    • 描述:ftp服務器端口。
    • 必選:否
    • 默認值:若傳輸協議是sftp協議,默認值是22;若傳輸協議是標準ftp協議,默認值是21
  • username

    • 描述:ftp服務器訪問用戶名。
    • 必選:是
    • 默認值:無
  • password

    • 描述:ftp服務器訪問密碼。
    • 必選:是
    • 默認值:無
  • path

    • 描述:遠程FTP文件係統的路徑信息,注意這裏可以支持填寫多個路徑。 當指定單個遠程FTP文件,FtpReader暫時隻能使用單線程進行數據抽取。二期考慮在非壓縮文件情況下針對單個File可以進行多線程並發讀取。

      當指定多個遠程FTP文件,FtpReader支持使用多線程進行數據抽取。線程並發數通過通道數指定。當指定通配符,FtpReader嚐試遍曆出多個文件信息。例如: 指定/代表讀取/目錄下所有的文件,指定/bazhen/代表讀取bazhen目錄下遊所有的文件。FtpReader目前隻支持*作為文件通配符。

      特別需要注意的是,CDP會將一個作業下同步的所有Text File視作同一張數據表。用戶必須自己保證所有的File能夠適配同一套schema信息。讀取文件用戶必須保證為類CSV格式,並且提供給CDP權限可讀。

      特別需要注意的是,如果Path指定的路徑下沒有符合匹配的文件抽取,CDP將報錯。

    • 必選:是

    • 默認值:無

  • column

    • 描述:讀取字段列表,type指定源數據的類型,index指定當前列來自於文本第幾列(以0開始),value指定當前類型為常量,不從源頭文件讀取數據,而是根據value值自動生成對應的列。 默認情況下,用戶可以全部按照String類型讀取數據,配置如下:

      "column": ["*"]
      

      用戶可以指定Column字段信息,配置如下:

      {
       "type": "long",
       "index": 0    //從遠程FTP文件文本第一列獲取int字段
      
        },
        {
       "type": "string",
       "value": "alibaba"  //從FtpReader內部生成alibaba的字符串字段作為當前字段
        }
      

      對於用戶指定Column信息,type必須填寫,index/value必須選擇其一。

    • 必選:是

    • 默認值:全部按照string類型讀取

  • fieldDelimiter

    • 描述:讀取的字段分隔符
    • 必選:是
    • 默認值:,
  • compress

    • 描述:文本壓縮類型,默認不填寫意味著沒有壓縮。支持壓縮類型為gzip、bzip2。
    • 必選:否
    • 默認值:沒有壓縮
  • encoding

    • 描述:讀取文件的編碼配置。
    • 必選:否
    • 默認值:utf-8
  • skipHeader

    • 描述:類CSV格式文件可能存在表頭為標題情況,需要跳過。默認不跳過。
    • 必選:否
    • 默認值:false
  • nullFormat

    • 描述:文本文件中無法使用標準字符串定義null(空指針),CDP提供nullFormat定義哪些字符串可以表示為null。例如如果用戶配置: nullFormat:"N",那麼如果源頭數據是"N",CDP視作null字段。
    • 必選:否
    • 默認值:N
3.3 類型轉換

遠程FTP文件本身不提供數據類型,該類型是CDP FtpReader定義:

CDP 內部類型 遠程FTP文件 數據類型
Long Long
Double Double
String String
Boolean Boolean
Date Date

其中:

  • 遠程FTP文件 Long是指遠程FTP文件文本中使用整形的字符串表示形式,例如"19901219"。
  • 遠程FTP文件 Double是指遠程FTP文件文本中使用Double的字符串表示形式,例如"3.1415"。
  • 遠程FTP文件 Boolean是指遠程FTP文件文本中使用Boolean的字符串表示形式,例如"true"、"false"。不區分大小寫。
  • 遠程FTP文件 Date是指遠程FTP文件文本中使用Date的字符串表示形式,例如"2014-12-31",Date可以指定format格式。

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

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