你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 数据工厂或 Azure Synapse Analytics 向/从 Azure Data Lake Storage Gen1 复制数据

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

提示

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

本文概述了如何向/从 Azure Data Lake Storage Gen1 复制数据。 有关详细信息,请阅读 Azure 数据工厂Azure Synapse Analytics 的简介文章。

支持的功能

此 Azure Data Lake Storage Gen1 连接器支持以下功能:

支持的功能 IR
复制活动(源/接收器)
映射数据流源(源/接收器) 3
Lookup 活动
GetMetadata 活动
Delete 活动

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

更确切地说,可以借助此连接器执行以下操作:

重要

如果使用自承载集成运行时复制数据,请将企业防火墙配置为,允许通过端口 443 流向 <ADLS account name>.azuredatalakestore.netlogin.microsoftonline.com/<tenant>/oauth2/token 的出站流量。 后者是 Azure 安全令牌服务,集成运行时需要与之通信以获取访问令牌。

入门

提示

有关如何使用 Azure Data Lake Store 连接器的演练,请参阅将数据加载到 Azure Data Lake Store

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

使用 UI 创建指向 Azure Data Lake Storage Gen1 的链接服务

使用以下步骤在 Azure 门户 UI 中创建指向 Azure Data Lake Storage Gen1 的链接服务。

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

  2. 搜索“Azure Data Lake Storage Gen1”并选择“Azure Data Lake Storage Gen1 连接器”。

    Screenshot of the Azure Data Lake Storage Gen1 connector.

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

    Screenshot of linked service configuration for Azure Data Lake Storage Gen1.

连接器配置详细信息

下面各部分介绍了用于定义特定于 Azure Data Lake Store Gen1 的实体的属性。

链接服务属性

Azure Data Lake Store 链接服务支持以下属性:

properties 描述 必需
type type 属性必须设置为 AzureDataLakeStore
dataLakeStoreUri Azure Data Lake Store 帐户相关信息。 此信息采用以下格式之一:https://[accountname].azuredatalakestore.net/webhdfs/v1adl://[accountname].azuredatalakestore.net/
subscriptionId Data Lake Store 帐户所属的 Azure 订阅 ID。 接收器所需
resourceGroupName Data Lake Store 帐户所属的 Azure 资源组名称。 接收器所需
connectVia 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,可以使用 Azure Integration Runtime 或自承载集成运行时。 如果没有指定此属性,则使用默认的 Azure Integration Runtime。

使用服务主体身份验证

若要使用服务主体身份验证,请按照以下步骤操作。

  1. 在 Microsoft Entra ID 中注册一个应用实体,并向它授予对 Data Lake Store 的访问权限。 有关详细步骤,请参阅服务到服务身份验证。 记下下面的值,这些值用于定义链接服务:

    • 应用程序 ID
    • 应用程序密钥
    • 租户 ID
  2. 向服务主体授予适当权限。 有关 Data Lake Storage Gen1 中的权限工作原理的示例,请参阅 Azure Data Lake Storage Gen1 中的访问控制

    • 作为源:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为要复制的文件授予“读取”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。 对帐户级别访问控制 (IAM) 没有要求。
    • 作为接收器:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为接收器文件夹授予“写入”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。

支持以下属性:

属性 描述 必选
servicePrincipalId 指定应用程序的客户端 ID。
servicePrincipalKey 指定应用程序的密钥。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密
tenant 指定应用驻留所在的租户的信息(如域名或租户 ID)。 可将鼠标悬停在 Azure 门户右上角进行检索。
azureCloudType 对于服务主体身份验证,请指定 Microsoft Entra 应用程序注册到的 Azure 云环境的类型。
允许的值为 AzurePublic、AzureChina、AzureUsGovernment 和 AzureGermany 。 默认情况下,使用服务的云环境。

示例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用系统分配的托管标识身份验证

数据工厂或 Synapse 工作区可与代表服务进行身份验证的系统分配的托管标识相关联。 你可以像使用自己的服务主体一样,直接使用此系统分配的托管标识进行 Data Lake Store 身份验证。 此指定资源可通过此方法访问以及 Data Lake Store 中的数据以及向/从 Data Lake Store 复制数据。

若要使用系统分配的托管标识身份验证,请执行以下步骤。

  1. 通过复制与工厂或 Synapse 工作区一起生成的“服务标识应用程序 ID”值,检索系统分配的托管标识信息

  2. 向系统分配的托管标识授予对 Data Lake Store 的访问权限。 有关 Data Lake Storage Gen1 中的权限工作原理的示例,请参阅 Azure Data Lake Storage Gen1 中的访问控制

    • 作为源:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为要复制的文件授予“读取”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。 对帐户级别访问控制 (IAM) 没有要求。
    • 作为接收器:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为接收器文件夹授予“写入”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。

除了链接服务中的常规 Data Lake Store 信息以外,不需要指定任何属性。

示例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用用户分配的托管标识身份验证

可以为数据工厂分配一个或多个用户分配的托管标识。 可以将此用户分配的托管标识用于 Blob 存储身份验证,该身份验证允许访问和复制 Data Lake Store 中的数据或将数据复制到其中。 若要详细了解 Azure 资源托管标识,请参阅 Azure 资源托管标识

若要使用用户分配的托管标识身份验证,请执行以下步骤:

  1. 创建一个或多个用户分配的托管标识并授予对 Azure Data Lake 的访问权限。 有关 Data Lake Storage Gen1 中的权限工作原理的示例,请参阅 Azure Data Lake Storage Gen1 中的访问控制

    • 作为源:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为要复制的文件授予“读取”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。 对帐户级别访问控制 (IAM) 没有要求。
    • 作为接收器:在“数据资源管理器”>“访问权限”中,请为所有上游文件夹(含根文件夹)授予至少“执行”权限,并为接收器文件夹授予“写入”权限。 对于递归,可以选择添加到“此文件夹和所有子文件夹”,并添加为“访问权限和默认权限项”。
  2. 为数据工厂分配一个或多个用户分配的托管标识,并为每个用户分配的托管标识创建凭据

支持以下属性:

属性 描述 必需
凭据 将用户分配的托管标识指定为凭据对象。

示例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

在基于格式的数据集中的 location 设置下,Azure Data Lake Store Gen1 支持以下属性:

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

示例:

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

复制活动属性

有关可用于定义活动的各个部分和属性的完整列表,请参阅管道。 本部分提供 Azure Data Lake Store 源和接收器支持的属性列表。

Azure Data Lake Store 作为源

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

在基于格式的复制源中的 storeSettings 设置下,Azure Data Lake Store Gen1 支持以下属性:

properties 描述 必需
type storeSettings 下的 type 属性必须设置为 AzureDataLakeStoreReadSettings。
找到要复制的文件:
选项 1:静态路径
从数据集中指定的给定文件夹/文件路径复制。 若要复制文件夹中的所有文件,请另外将 wildcardFileName 指定为 *
选项 2:名称范围
- listAfter
按字母顺序检索名称在此值之后的文件夹/文件(独有)。 它利用 ADLS Gen1 的服务端筛选器,相比通配符筛选器,服务端筛选器可提供更好的性能。
服务将此筛选器应用于数据集中定义的路径,并且仅支持一个实体级别。 请参阅名称范围筛选器示例中的更多示例。
选项 2:名称范围
- listBefore
按字母顺序检索名称在此值之前的文件夹/文件(独有)。 它利用 ADLS Gen1 的服务端筛选器,相比通配符筛选器,服务端筛选器可提供更好的性能。
服务将此筛选器应用于数据集中定义的路径,并且仅支持一个实体级别。 请参阅名称范围筛选器示例中的更多示例。
选项 3:通配符
- wildcardFolderPath
带有通配符的文件夹路径,用于筛选源文件夹。
允许的通配符为:*(匹配零个或更多个字符)和 ?(匹配零个或单个字符);如果实际文件夹名称中包含通配符或此转义字符,请使用 ^ 进行转义。
请参阅文件夹和文件筛选器示例中的更多示例。
选项 3:通配符
- wildcardFileName
给定 folderPath/wildcardFolderPath 下带有通配符的文件名,用于筛选源文件。
允许的通配符为:*(匹配零个或更多个字符)和 ?(匹配零个或单个字符);如果实际文件名中包含通配符或此转义字符,请使用 ^ 进行转义。 请参阅文件夹和文件筛选器示例中的更多示例。
选项 4:文件列表
- 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 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"activities":[
    {
        "name": "CopyFromADLSGen1",
        "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": "AzureDataLakeStoreReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Data Lake Store 作为接收器

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

在基于格式的复制接收器中的 storeSettings 设置下,Azure Data Lake Store Gen1 支持以下属性:

properties 描述 必需
type storeSettings 下的 type 属性必须设置为 AzureDataLakeStoreWriteSettings。
copyBehavior 定义以基于文件的数据存储中的文件为源时的复制行为。

允许值包括:
- PreserveHierarchy(默认):将文件层次结构保留到目标文件夹中。 指向源文件夹的源文件相对路径与指向目标文件夹的目标文件相对路径相同。
- FlattenHierarchy:源文件夹中的所有文件都位于目标文件夹的第一级中。 目标文件具有自动生成的名称。
- MergeFiles:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。
expiryDateTime 指定已写入文件的到期时间。 此时间在应用时采用 UTC 时间,格式为“2020-03-01T08:00:00Z”。 默认值为 NULL;也就是说,已写入的文件永不到期。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"activities":[
    {
        "name": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Parquet output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "ParquetSink",
                "storeSettings":{
                    "type": "AzureDataLakeStoreWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

名称范围筛选器示例

本部分介绍名称范围筛选器的结果行为。

示例源结构 配置 结果
root
    a
        file.csv
    ax
        file2.csv
    ax.csv
    b
        file3.csv
    bx.csv
    c
        file4.csv
    cx.csv
在数据集中:
- 文件夹路径:root

在复制活动源中:
- 列出该值以后的文件:a
- 列出该值以前的文件:b
然后,会复制以下文件:

root
    ax
        file2.csv
    ax.csv
    b
        file3.csv

文件夹和文件筛选器示例

本部分介绍使用通配符筛选器生成文件夹路径和文件名的行为。

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

文件列表路径指向同一数据存储中的文本文件,其中包含要复制的文件列表,每行一个文件,以及在数据集中配置的路径的相对路径。

复制操作的行为示例

本部分介绍将 recursivecopyBehavior 值进行不同组合所产生的复制操作行为。

recursive copyBehavior 源文件夹结构 生成目标
true preserveHierarchy Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用与源相同的结构创建目标 Folder1:

Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5。
flattenHierarchy Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用以下结构创建目标 Folder1:

Folder1
    File1 的自动生成的名称
    File2 的自动生成的名称
    File3 的自动生成的名称
    File4 的自动生成的名称
    File5 的自动生成的名称
mergeFiles Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用以下结构创建目标 Folder1:

Folder1
    File1 + File2 + File3 + File4 + File5 内容合并到一个自动生成文件名的文件中。
false preserveHierarchy Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用以下结构创建目标 Folder1:

Folder1
    文件 1
    文件 2

没有选取包含 File3、File4 和 File5 的 Subfolder1。
false flattenHierarchy Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用以下结构创建目标 Folder1:

Folder1
    File1 的自动生成的名称
    File2 的自动生成的名称

没有选取包含 File3、File4 和 File5 的 Subfolder1。
false mergeFiles Folder1
    文件 1
    文件 2
    Subfolder1
        File3
        File4
        File5
使用以下结构创建目标 Folder1:

Folder1
    File1 + File2 的内容将合并到一个文件中,且自动生成文件名。 File1 的自动生成的名称

没有选取包含 File3、File4 和 File5 的 Subfolder1。

将 ACL 保留到 Data Lake Storage Gen2

提示

有关将数据从 Azure Data Lake Storage Gen1 复制到 Gen2 中的一般演练和最佳做法,请参阅将数据从 Azure Data Lake Storage Gen1 复制到 Gen2

若要在从 Data Lake Storage Gen1 升级到 Data Lake Storage Gen2 时复制访问控制列表 (ACL) 和数据文件,请参阅从 Data Lake Storage Gen1 保留 ACL

映射数据流属性

在映射数据流中转换数据时,可以在 Azure Data Lake Storage Gen1 中读取和写入以下格式的文件:

格式特定的设置位于该格式的文档中。 有关详细信息,请参阅映射数据流中的源转换映射数据流中的接收器转换

源转换

在源转换中,可以从 Azure Data Lake Storage Gen1 中的容器、文件夹或单个文件进行读取。 通过“源选项”选项卡,可以管理如何读取文件。

Screenshot of source options tab in mapping data flow source transformation.

通配符路径:如果使用通配符模式,则会指示服务在单个源转换中循环访问每个匹配的文件夹和文件。 这是在单个流中处理多个文件的有效方法。 使用将鼠标悬停在现有通配符模式上时出现的“+”号来添加多个通配符匹配模式。

从源容器中,选择与模式匹配的一系列文件。 数据集中只能指定容器。 因此,通配符路径必须也包含根文件夹中的文件夹路径。

通配符示例:

  • * 表示任意字符集

  • ** 表示递归目录嵌套

  • ? 替换一个字符

  • [] 与括号中众多字符中的一个匹配

  • /data/sales/**/*.csv 获取 /data/sales 下的所有 csv 文件

  • /data/sales/20??/**/ 以递归方式获取所有匹配的 20xx 文件夹中的所有文件

  • /data/sales/*/*/*.csv 获取比 /data/sales 低两个级别的 csv 文件

  • /data/sales/2004/12/[XY]1?.csv 获取自 2004 年 12 月以来保存的,名称以 X 或 Y 开头并后接 1 和任意单个字符的所有 csv 文件

分区根路径:如果文件源中存在 key=value 格式(例如 year=2019)的分区文件夹,则可以向该分区文件夹树的顶层分配数据流中的列名称。

首先,设置一个通配符,用于包括分区文件夹以及要读取的叶文件的所有路径。

Screenshot of partition source file settings in mapping data flow source transformation.

使用“分区根路径”设置来定义文件夹结构的顶级。 通过数据预览查看数据内容时会看到,该服务会添加在每个文件夹级别中找到的已解析的分区。

Partition root path

文件列表: 这是一个文件集。 创建一个文本文件,其中包含要处理的相对路径文件的列表。 指向此文本文件。

用于存储文件名的列: 将源文件的名称存储在数据的列中。 请在此处输入新列名称以存储文件名字符串。

完成后: 数据流运行后,可以选择不对源文件执行任何操作、删除源文件或移动源文件。 移动路径是相对路径。

要将源文件移到其他位置进行后期处理,请首先选择“移动”以执行文件操作。 然后,设置“从”目录。 如果未对路径使用任何通配符,则“从”设置中的文件夹是与源文件夹相同的文件夹。

如果源路径包含通配符,语法如下所示:

/data/sales/20??/**/*.csv

可将“从”指定为

/data/sales

将“到”指定为

/backup/priorSales

在此例中,源自 /data/sales 下的所有文件都将移动到 /backup/priorSales。

注意

仅当从在管道中使用“执行数据流”活动的管道运行进程(管道调试或执行运行)中启动数据流时,文件操作才会运行。 文件操作不会在数据流调试模式下运行。

按上次修改时间筛选: 通过指定上次修改的日期范围,可以筛选要处理的文件。 所有日期时间均采用 UTC 格式。

启用变更数据捕获:如果为 true,则只能从上次运行中获取新的或更改后的文件。 将始终从首次运行中获取完整快照数据的初始加载,然后仅在下次运行中捕获新的或更改后的文件。 有关更多详细信息,请参阅变更数据捕获

Screenshot showing Enable change data capture.

接收器属性

在接收器转换中,可以写入到 Azure Data Lake Storage Gen1 中的容器或文件夹。 通过“设置”选项卡,可以管理如何写入文件。

sink options

清除文件夹: 确定在写入数据之前是否清除目标文件夹。

文件名选项: 确定目标文件在目标文件夹中的命名方式。 文件名选项有:

  • 默认:允许 Spark 根据 PART 默认值为文件命名。
  • 模式:输入一种模式,该模式枚举每个分区的输出文件。 例如,loans[n].csv 会创建 loans1.csv、loans2.csv 等。
  • 每个分区:为每个分区输入一个文件名。
  • 作为列中的数据:将输出文件设置为列的值。 此路径是数据集容器而非目标文件夹的相对路径。 如果数据集中有文件夹路径,该路径会被替代。
  • 输出到一个文件:将分区输出文件合并为一个命名的文件。 此路径是数据集文件夹的相对路径。 请注意,合并操作可能会因为节点大小而失败。 对于大型数据集,不建议使用此选项。

全部引用: 确定是否将所有值括在引号中

Lookup 活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

GetMetadata 活动属性

若要了解有关属性的详细信息,请查看 GetMetadata 活动

Delete 活动属性

若要详细了解这些属性,请查看 Delete 活动

旧模型

注意

仍按原样支持以下模型,以实现向后兼容性。 建议使用上面几个部分中提到的新模型,并且创作 UI 已切换为生成新模型。

旧数据集模型

属性 描述 必需
type 数据集的 type 属性必须设置为 AzureDataLakeStoreFile。
folderPath Data Lake Store 中的文件夹的路径。 如果未指定,它指向根目录。

支持通配符筛选器。 允许的通配符为:*(匹配零个或更多字符)和 ?(匹配零个或单个字符)。 如果实际文件夹名称内有通配符或 ^,请使用此转义字符进行转义。

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

对于筛选器,允许的通配符为:*(匹配零个或更多字符)和 ?(匹配零个或单个字符)。
- 示例 1:"fileName": "*.csv"
- 示例 2:"fileName": "???20180427.txt"
如果实际文件名内有通配符或 ^,请使用此转义字符进行转义。

如果没有为输出数据集指定 fileName,并且没有在活动接收器中指定 preserveHierarchy,则复制活动会自动生成采用以下模式的文件名称:“Data.[activity run ID GUID].[GUID if FlattenHierarchy].[format if configured].[compression if configured]”(例如,“Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz”)。 如果使用表名称(而不是查询)从表格源进行复制,则名称模式为“[table name].[format].[compression if configured]”(例如“MyTable.csv”)。
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 。 请将 format 中的 type 属性设置为上述值之一。 有关详细信息,请参阅文本格式JSON 格式Avro 格式Orc 格式Parquet 格式部分。
否(仅适用于二进制复制方案)
compression 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器
支持的类型为 GZipDeflateBZip2ZipDeflate
支持的级别为“最佳”和“最快”。

提示

如需复制文件夹下的所有文件,请仅指定 folderPath
若要复制一个具有特定名称的文件,请指定带有文件夹部分的 folderPath,以及带有文件名的 fileName。
若要复制文件夹下的文件子集,请指定带有文件夹部分的 folderPath,以及带有通配符筛选器的 fileName。

示例:

{
    "name": "ADLSDataset",
    "properties": {
        "type": "AzureDataLakeStoreFile",
        "linkedServiceName":{
            "referenceName": "<ADLS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "datalake/myfolder/",
            "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 属性必须设置为 AzureDataLakeStoreSource。
recursive 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹或子文件夹。 允许的值为 true(默认值)和 false
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"activities":[
    {
        "name": "CopyFromADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<ADLS Gen1 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureDataLakeStoreSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

旧复制活动接收器模型

属性 描述 必需
type 复制活动接收器的 type 属性必须设置为 AzureDataLakeStoreSink。
copyBehavior 定义以基于文件的数据存储中的文件为源时的复制行为。

允许值包括:
- PreserveHierarchy(默认):将文件层次结构保留到目标文件夹中。 指向源文件夹的源文件相对路径与指向目标文件夹的目标文件相对路径相同。
- FlattenHierarchy:源文件夹中的所有文件都位于目标文件夹的第一级中。 目标文件具有自动生成的名称。
- MergeFiles:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,会自动生成文件名。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"activities":[
    {
        "name": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<ADLS Gen1 output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureDataLakeStoreSink",
                "copyBehavior": "PreserveHierarchy"
            }
        }
    }
]

变更数据捕获(预览)

Azure 数据工厂只能从 Azure Data Lake Storage Gen1 获取新的或更改后的文件,方法是在映射数据流源转换中启用“启用变更数据捕获(预览)”。 使用此连接器选项,可以仅读取新的或更新后的文件,并在将转换后的数据加载到所选目标数据集之前应用转换。

请确保管道和活动名称保持不变,以便始终可以从上次运行中记录检查点,从而从此处获取更改。 如果更改管道名称或活动名称,检查点将重置,并且你将在下一次运行中从头开始。

调试管道时,“启用变更数据捕获(预览)”也正常工作。 在调试运行期间刷新浏览器时,检查点将重置。 对调试运行的结果感到满意后,可以发布和触发管道。 无论调试运行记录的上一个检查点是什么,它都将始终从头开始。

在监视部分,你始终有机会重新运行管道。 在这样做时,将始终从所选管道运行中的检查点记录获取更改。

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