使用 Azure Data Factory 或 Synapse Analytics 從 HDFS 伺服器複製數據

適用於: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本文概述如何從 Hadoop 分散式檔案系統 (HDFS) 伺服器複製數據。 若要深入瞭解,請閱讀 Azure Data FactorySynapse Analytics 的簡介文章。

支援的功能

下列功能支援此 HDFS 連接器:

支援的功能 IR
複製活動 (source/-) ① ②
查閱活動 ① ②
刪除活動 ① ②

(1) Azure 整合運行時間 (2) 自我裝載整合運行時間

具體而言,HDFS 連接器支援:

  • 使用 Windows (Kerberos) 或 匿名 驗證來複製檔案。
  • 使用 webhdfs 通訊協定或 內建 DistCp 支援來複製檔案。
  • 以原樣複製檔案,或使用支援的檔案格式和壓縮編解碼器剖析或產生檔案

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon Virtual Private Cloud 內,您必須設定 自我裝載整合運行時間 以連線到它。

如果您的資料存放區是受控雲端數據服務,您可以使用 Azure Integration Runtime。 如果存取僅限於防火牆規則中核准的IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合運行時間 功能來存取內部部署網路,而不需安裝及設定自我裝載整合運行時間。

如需 Data Factory 所支援之網路安全性機制和選項的詳細資訊,請參閱 數據存取策略

注意

請確定整合運行時間可以存取 Hadoop 叢集的所有 [名稱節點伺服器]:[名稱節點埠] 和 [資料節點伺服器]:[資料節點埠]。 預設 [名稱節點埠] 為 50070,預設 [數據節點埠] 為 50075。

開始使用

若要使用管線執行 複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立 HDFS 的連結服務

使用下列步驟,在 Azure 入口網站 UI 中建立 HDFS 的連結服務。

  1. 流覽至 Azure Data Factory 或 Synapse 工作區中的 [管理] 索引標籤,然後選取 [鏈接服務],然後按兩下 [新增]:

  2. 搜尋 HDFS 並選取 HDFS 連接器。

    Select the HDFS connector.

  3. 設定服務詳細數據、測試連線,並建立新的連結服務。

    Configure a linked service to HDFS.

連線 or 組態詳細數據

下列各節提供屬性的相關詳細數據,這些屬性是用來定義 HDFS 專屬的 Data Factory 實體。

鏈接的服務屬性

HDFS 連結服務支援下列屬性:

屬性 描述 必要
type type 屬性必須設定為 Hdfs Yes
URL HDFS 的 URL Yes
authenticationType 允許的值為 AnonymousWindows

若要設定內部部署環境,請參閱 使用 HDFS 連接器 的 Kerberos 驗證一節。
Yes
userName Windows 驗證 的用戶名稱。 針對 Kerberos 驗證,指定 username@domain.com>。<<> 是(適用於 Windows 驗證)
password Windows 驗證的密碼。 將此欄位標示為 SecureString 以安全地儲存,或 參考儲存在 Azure 金鑰保存庫中的秘密。 是 (適用於 Windows 驗證)
connectVia 要用來連接到數據存放區的整合運行時間。 若要深入瞭解,請參閱 必要條件 一節。 如果未指定整合運行時間,服務會使用預設的 Azure Integration Runtime。 No

範例:使用匿名驗證

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Anonymous",
            "userName": "hadoop"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

範例:使用 Windows 驗證

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Windows",
            "userName": "<username>@<domain>.com (for Kerberos auth)",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

如需可用來定義資料集之區段和屬性的完整清單,請參閱 數據集

Azure Data Factory 支援下列檔格式。 如需以格式為基礎的設定,請參閱每個文章。

在格式型資料集的設定下 location ,HDFS 支援下列屬性:

屬性 描述 必要
type 數據集底下的 location type 屬性必須設定為 HdfsLocation Yes
folderPath 資料夾的路徑。 如果您想要使用通配符來篩選資料夾,請略過此設定,並在活動來源設定中指定路徑。 No
fileName 指定 folderPath 底下的檔名。 如果您想要使用通配符來篩選檔案,請略過此設定,並在活動來源設定中指定檔名。 No

範例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HdfsLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

複製活動 屬性

如需可用來定義活動的區段和屬性完整清單,請參閱 管線和活動。 本節提供 HDFS 來源所支持的屬性清單。

HDFS 作為來源

Azure Data Factory 支援下列檔格式。 如需以格式為基礎的設定,請參閱每個文章。

在格式型複製來源的設定下 storeSettings ,HDFS 支援下列屬性:

屬性 描述 必要
type 底下的 storeSettings type 屬性必須設定為 HdfsRead 設定 Yes
找出要複製的檔案
選項 1:靜態路徑
從數據集中指定的資料夾或檔案路徑複製。 如果您要從資料夾複製所有檔案,請另外指定 wildcardFileName*
選項 2:通配符
- 通配符FolderPath
包含通配符的資料夾路徑,用來篩選源資料夾。
允許的通配符為: * (比對零或多個字元)和 ? (符合零或單一字元)。 如果您的實際資料夾名稱內有通配符或這個逸出字元,請使用 ^ 來逸出 。
如需更多範例,請參閱 資料夾和檔案篩選範例
No
選項 2:通配符
- 通配符FileName
具有指定 folderPath/wildcardFolderPath 底下通配符的檔名,用來篩選來源檔案。
允許的通配符為: * (比對零或多個字元)和 ? (符合零或單一字元;如果實際的檔名在內有通配符或這個逸出字元,請使用 ^ 逸出 。 如需更多範例,請參閱 資料夾和檔案篩選範例
Yes
選項 3:檔案清單
- fileListPath
表示複製指定的檔案集。 指向文字檔,其中包含您想要複製的檔案清單(每行一個檔案,以及數據集中所設定路徑的相對路徑)。
當您使用此選項時,請勿在資料集中指定檔名。 如需更多範例,請參閱 檔案清單範例
No
其他設定
遞迴 指出數據是以遞歸方式從子資料夾讀取,還是只從指定的資料夾讀取。 當 recursive 設為 true 且接收是以檔案為基礎的存放區時,不會在接收端複製或建立空的資料夾或子資料夾。
允許的值為 true (預設值)和 false
當您設定 fileListPath時,這個屬性不適用。
No
deleteFilesAfterCompletion 指出成功移至目的地存放區之後,是否會從來源存放區刪除二進位檔。 檔案刪除是每個檔案,因此當複製活動失敗時,您會看到某些檔案已複製到目的地並從來源刪除,而其他檔案仍留在來源存放區。
此屬性只有在二進位檔複製案例中才有效。 默認值:false。
No
modifiedDatetimeStart 檔案會根據上次修改的屬性進行篩選。
如果上次修改的時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 時間會以 2018-12-01T05:00:00Z 的格式套用至 UTC 時區。
屬性可以是 NULL,這表示不會將任何檔案屬性篩選套用至數據集。 當 modifiedDatetimeStart 有日期時間值但 modifiedDatetimeEnd 為 NULL 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 NULL 時,表示上次修改屬性小於選取 datetime 值的檔案。
當您設定 fileListPath時,這個屬性不適用。
No
modifiedDatetimeEnd 同上。
enablePartitionDiscovery 針對已分割的檔案,指定是否要從檔案路徑剖析分割區,並將其新增為其他源數據行。
允許的值為 false (預設值)和 true
No
partitionRootPath 啟用資料分割探索時,請指定絕對根路徑,以便將分割區資料夾讀取為資料列。

如果未指定,則預設為
- 當您在資料集中使用檔案路徑或來源上的檔案清單時,分割區根路徑是數據集中設定的路徑。
- 當您使用通配符資料夾篩選時,分割區根路徑是第一個通配符之前的子路徑。

例如,假設您在數據集中將路徑設定為 “root/folder/year=2020/month=08/day=27”:
- 如果您將分割區根路徑指定為 “root/folder/year=2020”,除了檔案內的數據行之外,複製活動還會另外產生兩 month 個數據行, day 且值 “08” 和 “27”。
- 如果未指定分割區根路徑,則不會產生任何額外的數據行。
No
maxConcurrent 連線 ions 在活動執行期間,與數據存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 No
DistCp 設定
distcp 設定 當您使用 HDFS DistCp 時要使用的屬性群組。 No
resourceManagerEndpoint YARN (另一個資源交涉者) 端點 是,如果使用 DistCp
tempScriptPath 用來儲存暫存 DistCp 命令腳本的資料夾路徑。 產生腳本檔案,並在複製作業完成之後移除。 是,如果使用 DistCp
distcpOptions 提供給 DistCp 命令的其他選項。 No

範例:

"activities":[
    {
        "name": "CopyFromHDFS",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HdfsReadSettings",
                    "recursive": true,
                    "distcpSettings": {
                        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
                        "tempScriptPath": "/usr/hadoop/tempscript",
                        "distcpOptions": "-m 100"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

資料夾和檔案篩選範例

本節描述如果您搭配資料夾路徑和檔名使用通配符篩選,則會產生的行為。

folderPath fileName 遞迴 來源資料夾結構和篩選結果( 擷取粗體 檔案)
Folder* (空白,使用預設值) false FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (空白,使用預設值) true FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv true FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

檔案清單範例

本節描述在 複製活動 來源中使用檔案清單路徑所產生的行為。 它假設您有下列源資料夾結構,且想要複製粗體類型的檔案:

範例來源結構 FileListToCopy.txt 中的內容 組態

    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    中繼資料
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
在資料集中:
- 資料夾路徑: root/FolderA

在 複製活動 來源中:
- 檔案清單路徑: root/Metadata/FileListToCopy.txt

檔案清單路徑會指向相同資料存放區中的文本檔,其中包含您要複製的檔案清單(每行一個檔案,以及數據集中所設定路徑的相對路徑)。

使用 DistCp 從 HDFS 複製數據

DistCp 是 Hadoop 原生命令行工具,可用於在 Hadoop 叢集中執行分散式複本。 當您在 DistCp 中執行命令時,它會先列出要複製的所有檔案,然後在 Hadoop 叢集中建立數個對應作業。 每個對應作業都會執行從來源到接收的二進位複本。

複製活動 支援使用 DistCp 將檔案和 Azure Blob 記憶體一樣複製到 Azure Blob 記憶體(包括分段複製),或 Azure Data Lake Store。 在此情況下,DistCp 可以利用叢集的強大功能,而不是在自我裝載整合運行時間上執行。 使用 DistCp 可提供更佳的複製輸送量,特別是如果您的叢集非常強大時。 根據設定,複製活動 會自動建構 DistCp 命令、將其提交至 Hadoop 叢集,以及監視複製狀態。

必要條件

若要使用 DistCp 將檔案從 HDFS 複製到 Azure Blob 儲存體(包括分段複製)或 Azure Data Lake Store,請確定您的 Hadoop 叢集符合下列需求:

  • MapReduce 和 YARN 服務已啟用。

  • YARN 版本為 2.5 或更新版本。

  • HDFS 伺服器會與您的目標數據存放區整合: Azure Blob 記憶體Azure Data Lake Store (ADLS Gen1)

    • 自 Hadoop 2.7 起,原生支援 Azure Blob FileSystem。 您只需要在 Hadoop 環境設定中指定 JAR 路徑。
    • Azure Data Lake Store FileSystem 從 Hadoop 3.0.0-alpha1 開始封裝。 如果您的 Hadoop 叢集版本早於該版本,您必須從這裡手動將 Azure Data Lake Store 相關 JAR 套件 (azure-datalake-store.jar) 匯入叢集,並在 Hadoop 環境設定中指定 JAR 檔案路徑。
  • 在 HDFS 中準備暫存資料夾。 此暫存資料夾可用來儲存 DistCp 殼層腳本,因此會佔用 KB 層級的空間。

  • 請確定 HDFS 連結服務中提供的使用者帳戶具有下列權限:

    • 在 YARN 中提交應用程式。
    • 在暫存資料夾下建立子資料夾和讀取/寫入檔案。

設定

如需 DistCp 相關組態和範例,請移至 HDFS 作為來源 一節。

針對 HDFS 連接器使用 Kerberos 驗證

有兩個選項可用來設定內部部署環境,以針對 HDFS 連接器使用 Kerberos 驗證。 您可以選擇更符合您情況的。

針對任一選項,請確定您已針對Hadoop叢集開啟webhdfs:

  1. 建立 webhdfs 的 HTTP 主體和 keytab。

    重要

    根據 Kerberos HTTP SPNEGO 規格,HTTP Kerberos 主體必須以 “HTTP/” 開頭。 從這裡深入瞭解。

    Kadmin> addprinc -randkey HTTP/<namenode hostname>@<REALM.COM>
    Kadmin> ktadd -k /etc/security/keytab/spnego.service.keytab HTTP/<namenode hostname>@<REALM.COM>
    
  2. HDFS 組態選項:在 中 hdfs-site.xml新增下列三個屬性。

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.principal</name>
        <value>HTTP/_HOST@<REALM.COM></value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.keytab</name>
        <value>/etc/security/keytab/spnego.service.keytab</value>
    </property>
    

選項 1:在 Kerberos 領域加入自我裝載整合運行時間機器

需求

  • 自我裝載整合運行時間機器必須加入 Kerberos 領域,且無法加入任何 Windows 網域。

如何設定

在 KDC 伺服器上:

建立主體,並指定密碼。

重要

用戶名稱不應包含主機名。

Kadmin> addprinc <username>@<REALM.COM>

在自我載入整合執行時間電腦上:

  1. 執行 Ksetup 公用程式來設定 Kerberos 金鑰發佈中心 (KDC) 伺服器和領域。

    計算機必須設定為工作組的成員,因為 Kerberos 領域與 Windows 網域不同。 您可以藉由執行下列命令來設定 Kerberos 領域並新增 KDC 伺服器,以達成此設定。 以您自己的領域名稱取代 REALM.COM

    C:> Ksetup /setdomain REALM.COM
    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    

    執行這些命令之後,請重新啟動電腦。

  2. 使用 命令驗證組 Ksetup 態。 輸出應該像這樣:

    C:> Ksetup
    default realm = REALM.COM (external)
    REALM.com:
        kdc = <your_kdc_server_address>
    

在您的資料處理站或 Synapse 工作區中:

  • 使用 Windows 驗證 搭配 Kerberos 主體名稱和密碼來連線到 HDFS 數據源,以設定 HDFS 連接器。 如需組態詳細數據,請查看 HDFS 鏈接服務屬性 區段。

選項 2:啟用 Windows 網域和 Kerberos 領域之間的相互信任

需求

  • 自我裝載整合運行時間機器必須加入 Windows 網域。
  • 您需要更新網域控制站設定的權限。

如何設定

注意

使用您自己的領域名稱和域控制器取代下列教學課程中的 REALM.COM 和 AD.COM。

在 KDC 伺服器上:

  1. 編輯 krb5.conf 檔案中的 KDC 組態,以透過參考下列組態範本,讓 KDC 信任 Windows 網域。 根據預設,設定會位於 /etc/krb5.conf

    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     default_realm = REALM.COM
     dns_lookup_realm = false
     dns_lookup_kdc = false
     ticket_lifetime = 24h
     renew_lifetime = 7d
     forwardable = true
    
    [realms]
     REALM.COM = {
      kdc = node.REALM.COM
      admin_server = node.REALM.COM
     }
    AD.COM = {
     kdc = windc.ad.com
     admin_server = windc.ad.com
    }
    
    [domain_realm]
     .REALM.COM = REALM.COM
     REALM.COM = REALM.COM
     .ad.com = AD.COM
     ad.com = AD.COM
    
    [capaths]
     AD.COM = {
      REALM.COM = .
     }
    

    配置檔案之後,請重新啟動 KDC 服務。

  2. 使用下列命令在 KDC 伺服器中準備名為 krbtgt/REALM.COM@AD.COM 的主體:

    Kadmin> addprinc krbtgt/REALM.COM@AD.COM
    
  3. hadoop.security.auth_to_local HDFS 服務設定檔案中,新增 RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//

在網域控制器上:

  1. 執行下列 Ksetup 命令以新增領域專案:

    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    
  2. 建立 Windows 網域對 Kerberos 領域的信任關係。 [password] 是主體 krbtgt/REALM.COM@AD.COM的密碼。

    C:> netdom trust REALM.COM /Domain: AD.COM /add /realm /password:[password]
    
  3. 選取 Kerberos 中使用的加密演算法。

    a. 選取 [伺服器管理員> 組策略管理>網域>組策略對象>默認或作用中網域原則],然後選取 [編輯]。

    b. 在 [組策略管理編輯器] 窗格中,選取 [計算機設定>>原則][Windows 設定> 安全性 設定>[本機>原則安全性選項],然後設定 [網络安全性:設定 Kerberos 允許的加密類型]。

    c. 選取連線到 KDC 伺服器時要使用的加密演算法。 您可以選取所有選項。

    Screenshot of the "Network security: Configure encryption types allowed for Kerberos" pane

    d. Ksetup使用 命令來指定要在指定領域中使用的加密演算法。

    C:> ksetup /SetEncTypeAttr REALM.COM DES-CBC-CRC DES-CBC-MD5 RC4-HMAC-MD5 AES128-CTS-HMAC-SHA1-96 AES256-CTS-HMAC-SHA1-96
    
  4. 建立網域帳戶與 Kerberos 主體之間的對應,讓您可以在 Windows 網域中使用 Kerberos 主體。

    a. 選取 [管理員 工具> Active Directory 使用者和電腦]。

    b. 選取 [檢視]>[進階功能],以設定進階功能。

    c. 在 [ 進階功能] 窗格上,以滑鼠右鍵按下您要建立對應的帳戶,然後在 [ 名稱對應 ] 窗格中,選取 [Kerberos 名稱 ] 索引卷標。

    d. 加入來自領域的主體。

    Screenshot of the "Security Identity Mapping" pane

在自我載入整合執行時間電腦上:

  • 執行下列 Ksetup 命令以新增領域專案。

    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    

在您的資料處理站或 Synapse 工作區中:

  • 使用 Windows 驗證 搭配您的網域帳戶或 Kerberos 主體來連線到 HDFS 數據源,以設定 HDFS 連接器。 如需組態詳細數據,請參閱 HDFS 鏈接服務屬性 一節。

查閱活動屬性

如需查閱活動屬性的詳細資訊,請參閱 查閱活動

刪除活動屬性

如需刪除活動屬性的詳細資訊,請參閱 刪除活動

舊版模型

注意

下列模型仍受支持,因為回溯相容性。 建議您使用先前討論的新模型,因為撰寫 UI 已切換為產生新的模型。

舊版數據集模型

屬性 描述 必要
type 數據集的 type 屬性必須設定為 FileShare Yes
folderPath 資料夾的路徑。 支援通配符篩選。 允許的通配符為 * (比對零或多個字元)和 ? (符合零或單一字元;如果實際的檔名在 內有通配符或這個逸出字元,請使用 ^ 逸出 。

範例:rootfolder/subfolder/,請參閱資料夾和檔案篩選範例中的 更多範例
Yes
fileName 指定 「folderPath」 下檔案的名稱或通配符篩選。 如果您未指定這個屬性的值,數據集會指向資料夾中的所有檔案。

針對篩選,允許的通配符為 * (符合零或多個字元)和 ? (符合零或單一字元)。
- 範例 1: "fileName": "*.csv"
- 範例 2: "fileName": "???20180427.txt"
如果您的實際資料夾名稱內有通配符或這個逸出字元,請使用 ^ 來逸出 。
No
modifiedDatetimeStart 檔案會根據上次修改的屬性進行篩選。 如果上次修改的時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 時間會套用至格式 為 2018-12-01T05:00:00Z 的 UTC 時區。

請注意,當您想要將檔案篩選套用至大量檔案時,啟用此設定會影響數據移動的整體效能。

屬性可以是 NULL,這表示不會將任何檔案屬性篩選套用至數據集。 當 modifiedDatetimeStart 有日期時間值但 modifiedDatetimeEnd 為 NULL 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 NULL 時,表示上次修改屬性小於選取 datetime 值的檔案。
No
modifiedDatetimeEnd 檔案會根據上次修改的屬性進行篩選。 如果上次修改的時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 時間會套用至格式 為 2018-12-01T05:00:00Z 的 UTC 時區。

請注意,當您想要將檔案篩選套用至大量檔案時,啟用此設定會影響數據移動的整體效能。

屬性可以是 NULL,這表示不會將任何檔案屬性篩選套用至數據集。 當 modifiedDatetimeStart 有日期時間值但 modifiedDatetimeEnd 為 NULL 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 NULL 時,表示上次修改屬性小於選取 datetime 值的檔案。
No
format 如果您想要在檔案型存放區之間複製檔案(二進位複製),請略過輸入和輸出數據集定義中的 format 區段。

如果您想要剖析具有特定格式的檔案,支援下列檔格式類型:TextFormatJsonFormatAvroFormat、OrcFormatParquetFormat。 將 格式下的 type 屬性設定為下列其中一個值。 如需詳細資訊,請參閱文字格式、JSON 格式Avro 格式ORC 格式Parquet 格式小節。
否 (僅適用於二進位複製案例)
壓縮 指定數據的壓縮類型和層級。 如需詳細資訊,請參閱 支援的檔格式和壓縮編解碼器
支援的類型包括:Gzip、Deflate、Bzip2ZipDeflate
支援的層級為: 最佳最快
No

提示

若要複製資料夾下的所有檔案,請只指定 folderPath
若要複製具有指定名稱的單一檔案,請使用資料夾部分指定 folderPath,並使用檔名指定 fileName
若要複製資料夾下的檔案子集,請使用資料夾部分指定 folderPath,並使用通配符篩選來指定 fileName

範例:

{
    "name": "HDFSDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

舊版 複製活動 來源模型

屬性 描述 必要
type 複製活動 來源的 type 屬性必須設定為 HdfsSource Yes
遞迴 指出數據是以遞歸方式從子資料夾讀取,還是只從指定的資料夾讀取。 當遞歸設定為 true 且接收是以檔案為基礎的存放區時,將不會在接收端複製或建立空的資料夾或子資料夾。
允許的值為 true (預設值)和 false
No
distcp 設定 當您使用 HDFS DistCp 時,屬性群組。 No
resourceManagerEndpoint YARN Resource Manager 端點 是,如果使用 DistCp
tempScriptPath 用來儲存暫存 DistCp 命令腳本的資料夾路徑。 產生腳本檔案,並在複製作業完成之後移除。 是,如果使用 DistCp
distcpOptions 其他選項會提供給 DistCp 命令。 No
maxConcurrent 連線 ions 在活動執行期間,與數據存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 No

範例:使用 DistCp 複製活動 中的 HDFS 來源

"source": {
    "type": "HdfsSource",
    "distcpSettings": {
        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
        "tempScriptPath": "/usr/hadoop/tempscript",
        "distcpOptions": "-m 100"
    }
}

如需 複製活動 支援做為來源和接收的數據存放區清單,請參閱支援的數據存放區