使用 Azure 数据工厂或 Synapse Analytics 从 HDFS 服务器复制数据

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文概述了如何从 Hadoop 分布式文件系统 (HDFS) 服务器复制数据。 有关详细信息,请阅读 Azure 数据工厂Synapse Analytics 的简介文章。

支持的功能

此 HDFS 连接器支持以下功能:

支持的功能 IR
复制活动(源/-) ① ②
Lookup 活动 ① ②
Delete 活动 ① ②

① Azure 集成运行时 ② 自承载集成运行时

具体而言,HDFS 连接器支持:

  • 使用 Windows (Kerberos) 或匿名身份验证复制文件 。
  • 使用 webhdfs 协议或内置 DistCp 支持复制文件 。
  • 按原样复制文件,或者通过使用支持的文件格式和压缩编解码器分析或生成文件来复制文件。

先决条件

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。

此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

注意

请确保集成运行时可以访问 Hadoop 群集的所有 [名称节点服务器]:[名称节点端口] 和 [数据节点服务器]:[数据节点端口]。 默认 [名称节点端口] 为 50070,默认 [数据节点端口] 为 50075。

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建到 HDFS 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 HDFS 的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡,并选择“链接服务”,然后单击“新建”:

  2. 搜索“HDFS”并选择 HDFS 连接器。

    Select the HDFS connector.

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    Configure a linked service to HDFS.

连接器配置详细信息

对于特定于 HDFS 的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

HDFS 链接服务支持以下属性:

属性 描述 必需
type type 属性必须设置为 Hdfs
url HDFS 的 URL
authenticationType 允许的值为 Anonymous 或 Windows 。

若要设置本地环境,请参阅对 HDFS 连接器使用 Kerberos 身份验证部分。
userName Windows 身份验证的用户名。 对于 Kerberos 身份验证,请指定 <username>@<domain>.com。 是(对于 Windows 身份验证)
password Windows 身份验证的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密 是(对于 Windows 身份验证)
connectVia 用于连接到数据存储的集成运行时。 若要了解详细信息,请参阅先决条件部分。 如果未指定集成运行时,服务会使用默认的 Azure Integration Runtime。

示例:使用匿名身份验证

{
    "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 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

HTTP 支持基于格式的数据集中 location 设置下的以下属性:

属性 描述 必需
type 数据集中 location 下的 type 属性必须设置为 HdfsLocation。
folderPath 文件夹的路径。 如果要使用通配符来筛选文件夹,请跳过此设置并在活动源设置中指定路径。
fileName 指定的 folderPath 下的文件名。 如果要使用通配符来筛选文件,请跳过此设置并在活动源设置中指定文件名。

示例:

{
    "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 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

HDFS 支持基于格式的复制源中 storeSettings 设置下的以下属性:

属性 描述 必需
type storeSettings 下的 type 属性必须设置为 HdfsReadSettings
找到要复制的文件
选项 1:静态路径
从数据集中指定的文件夹或文件路径复制。 若要复制文件夹中的所有文件,请另外将 wildcardFileName 指定为 *
选项 2:通配符
- wildcardFolderPath
带有通配符的文件夹路径,用于筛选源文件夹。
允许的通配符为:*(匹配零个或更多字符)和 ?(匹配零个或单个字符)。 如果实际文件夹名内具有通配符或此转义字符,请使用 ^ 进行转义。
如需更多示例,请参阅文件夹和文件筛选器示例
选项 2:通配符
- wildcardFileName
指定的 folderPath/wildcardFolderPath 下带有通配符的文件名,用于筛选源文件。
允许的通配符为:*(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符);如果实际文件名中包含通配符或此转义字符,请使用 ^ 进行转义。 如需更多示例,请参阅文件夹和文件筛选器示例
选项 3:文件列表
- fileListPath
表示要复制指定文件集。 指向一个文本文件,其中包含要复制的文件列表(每行一个文件,带有数据集中所配置路径的相对路径)。
使用此选项时,请不要在数据集中指定文件名。 如需更多示例,请参阅文件列表示例
其他设置
recursive 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹或子文件夹。
允许的值为 true(默认值)和 false
如果配置 fileListPath,则此属性不适用。
deleteFilesAfterCompletion 指示是否会在二进制文件成功移到目标存储后将其从源存储中删除。 文件删除按文件进行。因此,当复制活动失败时,你会看到一些文件已经复制到目标并从源中删除,而另一些文件仍保留在源存储中。
此属性仅在二进制文件复制方案中有效。 默认值:false。
modifiedDatetimeStart 文件根据“上次修改时间”属性进行筛选。
如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。
属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
如果配置 fileListPath,则此属性不适用。
modifiedDatetimeEnd 同上。
enablePartitionDiscovery 对于已分区的文件,请指定是否从文件路径分析分区,并将它们添加为附加的源列。
允许的值为 false(默认)和 true 。
partitionRootPath 启用分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。

如果未指定,默认情况下,
- 在数据集或源的文件列表中使用文件路径时,分区根路径是在数据集中配置的路径。
- 使用通配符文件夹筛选器时,分区根路径是第一个通配符前的子路径。

例如,假设你将数据集中的路径配置为“root/folder/year=2020/month=08/day=27”:
- 如果将分区根路径指定为“root/folder/year=2020”,则除了文件内的列外,复制活动还将生成另外两个列 monthday,其值分别为“08”和“27”。
- 如果未指定分区根路径,则不会生成额外的列。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。
DistCp 设置
distcpSettings 使用 HDFS DistCp 时将使用的属性组。
resourceManagerEndpoint YARN (Yet Another Resource Negotiator) 终结点 是(如果使用 DistCp)
tempScriptPath 用于存储临时 DistCp 命令脚本的文件夹路径。 脚本文件将生成并在复制作业完成后删除。 是(如果使用 DistCp)
distcpOptions 提供给 DistCp 命令的其他选项。

示例:

"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 recursive 源文件夹结构和筛选器结果(用粗体表示的文件已检索)
Folder* (为空,使用默认值) false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (为空,使用默认值) true FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

文件列表示例

本部分介绍了在复制活动源中使用文件列表路径时产生的行为。 假设有以下源文件夹结构,并且要复制粗体类型的文件:

示例源结构 FileListToCopy.txt 中的内容 配置
root
    FolderA
        File1.csv
        File2.json
        Subfolder1
            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 群集中创建多个 Map 作业。 每个 Map 作业会将数据以二进制格式从源复制到接收器。

复制活动支持使用 DistCp 将文件按原样复制到 Azure Blob 存储(包括暂存复制)。 在这种情况下,DistCp 可以利用群集的功能,而不必在自承载集成运行时上运行。 使用 DistCp 可以提供更高的复制吞吐量,尤其是在群集非常强大的情况下。 根据配置,复制活动会自动构造 DistCp 命令,将其提交到 Hadoop 群集并监视复制状态。

先决条件

若要使用 DistCp 将文件按原样从 HDFS 复制到 Azure Blob 存储(包括暂存复制),请确保 Hadoop 群集满足以下要求:

  • 启用了 MapReduce 和 YARN 服务。

  • YARN 版本为 2.5 或更高版本。

  • HDFS 服务器已与目标数据存储集成:Azure Blob 存储:

    从 Hadoop 2.7 起,为 Azure Blob FileSystem 提供本机支持。 只需在 Hadoop 环境配置中指定 JAR 路径即可。

  • 在 HDFS 中准备临时文件夹。 此临时文件夹用于存储 DistCp shell 脚本,因此会占用 KB 级的空间。

  • 确保 HDFS 链接服务中提供的用户帐户具有以下权限:

    • 在 YARN 中提交应用程序。
    • 在临时文件夹下创建一个子文件夹和读/写文件。

配置

如需与 DistCp 相关的配置和示例,请参阅以 HDFS 作为源部分。

对 HDFS 连接器使用 Kerberos 身份验证

可以通过两个选项来设置本地环境,以便对 HDFS 连接器使用 Kerberos 身份验证。 你可以选择更适合自己情况的选项。

对于任一选项,确保为 Hadoop 群集打开 webhdfs:

  1. 为 webhdfs 创建 HTTP 主体和密钥表。

    重要

    根据 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 链接服务属性部分。

查找活动属性

有关 Lookup 活动属性的详细信息,请参阅 Lookup 活动

Delete 活动属性

有关 Delete 活动属性的详细信息,请参阅 Delete 活动

旧模型

注意

仍会按原样支持以下模型,以实现后向兼容性。 建议你使用前面讨论的新模型,因为创作 UI 已切换到生成新模型。

旧数据集模型

属性 描述 必需
type 数据集的 type 属性必须设置为 FileShare
folderPath 文件夹的路径。 支持通配符筛选器。 允许的通配符为 *(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符);如果实际文件名中包含通配符或此转义字符,请使用 ^ 进行转义。

示例:“rootfolder/subfolder/”,请参阅文件夹和文件筛选器示例中的更多示例。
fileName 指定的“folderPath”下的文件的名称或通配符筛选器。 如果没有为此属性指定任何值,则数据集会指向文件夹中的所有文件。

对于筛选器,允许的通配符为 *(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符)。
- 示例 1:"fileName": "*.csv"
- 示例 2:"fileName": "???20180427.txt"
如果实际文件夹名内具有通配符或此转义字符,请使用 ^ 进行转义。
modifiedDatetimeStart 文件根据“上次修改时间”属性进行筛选。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。

请注意,当你要对大量文件应用文件筛选器时,启用此设置会影响数据移动的整体性能。

属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
modifiedDatetimeEnd 文件根据“上次修改时间”属性进行筛选。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。

请注意,当你要对大量文件应用文件筛选器时,启用此设置会影响数据移动的整体性能。

属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
format 若要在基于文件的存储之间按原样复制文件(二进制副本),可以在输入和输出数据集定义中跳过格式节。

若要分析具有特定格式的文件,以下是受支持的文件格式类型:TextFormat、JsonFormat、AvroFormat、OrcFormat、ParquetFormat 。 请将格式中的“type”属性设置为上述值之一。 有关详细信息,请参阅文本格式JSON 格式Avro 格式ORC 格式Parquet 格式部分。
否(仅适用于二进制复制方案)
compression 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器
支持的类型包括:Gzip、Deflate、Bzip2 和 ZipDeflate。
支持的级别为:“最佳”和“最快” 。

提示

如需复制文件夹下的所有文件,请仅指定 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。
recursive 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹或子文件夹。
允许的值为 true(默认值)和 false
distcpSettings 使用 HDFS DistCp 时的属性组。
resourceManagerEndpoint YARN 资源管理器终结点 是(如果使用 DistCp)
tempScriptPath 用于存储临时 DistCp 命令脚本的文件夹路径。 脚本文件将生成并在复制作业完成后删除。 是(如果使用 DistCp)
distcpOptions 提供给 DistCp 命令的其他选项。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:复制活动中使用 DistCp 的 HDFS 源

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

有关 Copy 活动支持作为源和接收器的数据存储列表,请参阅支持的数据存储