Поделиться через


Копирование данных в хранилище Azure Data Lake Storage 1-го поколения и из него с помощью Фабрики данных Azure или Azure Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается копирование данных в Azure Data Lake Storage 1-го поколения и из него. Дополнительные сведения см. в вводной статье о Фабрике данных Azure или Azure Synapse Analytics.

Примечание.

Azure Data Lake Storage 1-го поколения была прекращена 29 февраля 2024 г. Перейдите к соединителю Azure Data Lake Storage 2-го поколения. См. эту статью по руководству по миграции Data Lake Storage 1-го поколения Azure.

Поддерживаемые возможности

Этот соединитель Azure Data Lake Storage 1-го поддерживается для следующих возможностей.

Поддерживаемые возможности IR
Действие копирования (источник/приемник) (1) (2)
Поток данных для сопоставления (источник/приемник) (1)
Действие поиска (1) (2)
Действие получения метаданных в Фабрике данных Azure (1) (2)
Действие удаления (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

В частности, с помощью этого соединителя вы можете выполнять следующие задачи.

Внимание

Если вы копируете данные с использованием локальной среды выполнения интеграции, настройте корпоративный брандмауэр, чтобы разрешить исходящий трафик в <ADLS account name>.azuredatalakestore.net и login.microsoftonline.com/<tenant>/oauth2/token через порт 443. Последняя – это служба токенов безопасности Azure, с которой должна взаимодействовать среда выполнения интеграции для получения маркера доступа.

Начать

Совет

Пошаговое руководство по использованию соединителя Azure Data Lake Store см. в статье Загрузка данных в Azure Data Lake Store.

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы для Azure Data Lake Storage 1-го поколения с помощью пользовательского интерфейса

Выполните приведенные ниже действия, чтобы создать связанную службу для Azure Data Lake Storage 1-го поколения с помощью пользовательского интерфейса на портале Azure.

  1. Перейдите на вкладку "Управление" в Фабрике данных Azure или рабочей области Synapse и выберите "Связанные службы", затем щелкните "Создать".

  2. Выполните поиск по строке "Azure Data Lake Storage Gen1" и выберите соединитель Azure Data Lake Storage 1-го поколения.

    Снимок экрана: соединитель Azure Data Lake Storage 1-го поколения.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Снимок экрана: конфигурация связанной службы для Azure Data Lake Storage 1-го поколения.

Сведения о конфигурации соединителя

Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей, характерных для Azure Data Lake Storage 1-го поколения.

Свойства связанной службы

Для связанной службы Azure Data Lake Store поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Для свойства type следует задать значение AzureDataLakeStore. Да
dataLakeStoreUri Сведения об учетной записи Azure Data Lake Store. Эти данные принимают один из следующих форматов: https://[accountname].azuredatalakestore.net/webhdfs/v1 или adl://[accountname].azuredatalakestore.net/. Да
subscriptionId Идентификатор подписки Azure, к которой принадлежит учетная запись Data Lake Store. Необходимо для приемника
resourceGroupName Имя группы ресурсов Azure, к которой принадлежит учетная запись Data Lake Store. Необходимо для приемника
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать Azure Integration Runtime или локальную среду IR (если хранилище данных расположено в частной сети). Если это свойство не задано, используется Azure Integration Runtime по умолчанию. No

Использование аутентификации субъекта-службы

Чтобы использовать аутентификацию на основе субъекта-службы, выполните следующие действия.

  1. Зарегистрируйте сущность приложения в идентификаторе Microsoft Entra и предоставьте ему доступ к Data Lake Store. Подробные инструкции см. в статье Аутентификация между службами в Data Lake Store с помощью Azure Active Directory. Запишите следующие значения, которые используются для определения связанной службы:

    • Application ID
    • ключ приложения.
    • Идентификатор клиента
  2. Предоставьте правильное разрешение субъекту-службе. Примеры использования разрешения в Data Lake Storage 1-го поколения см. в статье Контроль доступа в Azure Data Lake Storage 1-го поколения.

    • Как источник: в Access обозревателя>данных предоставьте по крайней мере разрешение на выполнение всех вышестоящих папок, включая корневой каталог, а также разрешение на чтение для копирования файлов. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию. Требования к управлению доступом на уровне учетной записи (IAM) отсутствуют.
    • Как приемник: в Access обозревателя>данных предоставьте по крайней мере разрешение execute для всех вышестоящих папок, включая корневую папку, а также разрешение на запись для папки приемника. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию.

Поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
servicePrincipalId Укажите идентификатора клиента приложения. Да
servicePrincipalKey Укажите ключ приложения. Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да
tenant Укажите сведения о клиенте, такие как доменное имя или идентификатор клиента, в котором находится приложение. Эти сведения можно получить, наведя указатель мыши на правый верхний угол страницы портала Azure. Да
azureCloudType Для проверки подлинности субъекта-службы укажите тип облачной среды Azure, в которой зарегистрировано приложение Microsoft Entra.
Допустимые значения: AzurePublic, AzureChina, AzureUsGovernment и AzureGermany. По умолчанию используется облачная среда службы.
No

Пример:

{
    "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 и в нее.

Для использования проверки подлинности с помощью управляемого удостоверения, назначаемого системой, выполните приведенные ниже действия.

  1. Получите сведения об управляемом удостоверении, назначаемом системой, скопировав значение идентификатора приложения удостоверения службы, созданного вместе с фабрикой или рабочей областью Synapse.

  2. Предоставьте управляемому удостоверению, назначаемому системой, доступ к Data Lake Store. Примеры использования разрешения в Data Lake Storage 1-го поколения см. в статье Контроль доступа в Azure Data Lake Storage 1-го поколения.

    • Как источник: в Access обозревателя>данных предоставьте по крайней мере разрешение на выполнение всех вышестоящих папок, включая корневой каталог, а также разрешение на чтение для копирования файлов. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию. Требования к управлению доступом на уровне учетной записи (IAM) отсутствуют.
    • Как приемник: в Access обозревателя>данных предоставьте по крайней мере разрешение execute для всех вышестоящих папок, включая корневую папку, а также разрешение на запись для папки приемника. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию.

Не нужно указывать ничего, кроме общих сведений о 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 1-го поколения см. в статье Контроль доступа в Azure Data Lake Storage 1-го поколения.

    • Как источник: в Access обозревателя>данных предоставьте по крайней мере разрешение на выполнение всех вышестоящих папок, включая корневой каталог, а также разрешение на чтение для копирования файлов. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию. Требования к управлению доступом на уровне учетной записи (IAM) отсутствуют.
    • Как приемник: в Access обозревателя>данных предоставьте по крайней мере разрешение execute для всех вышестоящих папок, включая корневую папку, а также разрешение на запись для папки приемника. Вы можете выбрать добавление в эту папку и все дочерние элементы для свойства recursive и добавить в качестве записи разрешения доступа и записи разрешения по умолчанию.
  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 поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

Ниже перечислены свойства, которые поддерживаются для Azure Data Lake Storage 1-го поколения в настройках location в наборе данных на основе формата.

Свойство Описание: Обязательное поле
type Свойству type в разделе location в наборе данных должно быть задано значение AzureDataLakeStoreLocation. Да
folderPath Путь к папке. Если вы хотите использовать подстановочный знак для фильтрации папок, пропустите этот параметр и укажите его в параметрах источника действия. No
fileName Имя файла в заданном пути к папке. Если вы хотите использовать подстановочный знак для фильтрации файлов, пропустите этот параметр и укажите его в параметрах источника действия. No

Пример:

{
    "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. Этот раздел содержит список свойств, поддерживаемых источником и приемником Azure Data Lake Store.

Azure Data Lake Store в качестве источника

Фабрика данных Azure поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

Ниже перечислены свойства, которые поддерживаются для Azure Data Lake Storage 1-го поколения в настройках storeSettings в источнике копирования на основе формата.

Свойство Описание: Обязательное поле
type Для свойства type в разделе storeSettings необходимо задать значение AzureDataLakeStoreReadSettings. Да
Поиск файлов для копирования
ВАРИАНТ 1. Статический путь
Копирование будет производиться из указанного пути к папке или файлу, заданному в наборе данных. Если вы хотите скопировать все файлы из папки, дополнительно укажите wildcardFileName со значением *.
ВАРИАНТ 2. Диапазон имен
- listAfter
Получение папок и файлов, имя которых находится после этого значения (не включая его) в алфавитном порядке. Используется фильтр на стороне службы ADLS 1-го поколения, который более эффективен, чем фильтр с подстановочными знаками.
Служба применяет этот фильтр к пути, определенному в наборе данных. Поддерживается только один уровень сущности. Дополнительные примеры см. в разделе Примеры фильтров по диапазону имен.
No
ВАРИАНТ 2. Диапазон имен
- listBefore
Получение папок и файлов, имя которых находится до этого значения (включая его) в алфавитном порядке. Используется фильтр на стороне службы ADLS 1-го поколения, который более эффективен, чем фильтр с подстановочными знаками.
Служба применяет этот фильтр к пути, определенному в наборе данных. Поддерживается только один уровень сущности. Дополнительные примеры см. в разделе Примеры фильтров по диапазону имен.
No
Вариант 3. Подстановочный знак
- wildcardFolderPath
Путь к папке будет использовать подстановочные знаки для фильтрации исходных папок.
Допустимые подстановочные знаки: * (соответствует нулю или большему количеству знаков) и ? (соответствует нулю или одному знаку). Для экранирования используйте ^, если фактическое имя папки содержит подстановочный знак или escape-символ.
Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
No
Вариант 3. Подстановочный знак
— wildcardFileName
Имя файла с подстановочными знаками в заданном контейнере и folderPath/wildcardFolderPath для фильтрации исходных папок.
Допустимые подстановочные знаки: * (соответствует нулю или большему количеству знаков) и ? (соответствует нулю или одному знаку). Для экранирования используйте ^, если фактическое имя файла содержит подстановочный знак или escape-символ. Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
Да
ВАРИАНТ 4. Список файлов
- fileListPath
Указывает, что нужно скопировать заданный набор файлов. Укажите текстовый файл со списком файлов, которые необходимо скопировать, по одному файлу в строке (каждая строка должна содержать относительный путь к заданному в наборе данных пути).
При использовании этого параметра не указывайте имя файла в наборе данных. Ознакомьтесь с дополнительными примерами в разделе Примеры списков файлов.
No
Дополнительные параметры:
recursive Указывает, следует ли читать данные рекурсивно из вложенных папок или только из указанной папки. Если для свойства recursive задано значение true, а приемником является файловое хранилище, то пустые папки и вложенные папки в приемнике не создаются.
Допустимые значения: true (по умолчанию) и false.
Это свойство не применяется при настройке fileListPath.
No
deleteFilesAfterCompletion Указывает, удаляются ли двоичные файлы из исходного хранилища после успешного перемещения в конечное хранилище. Удаление файла выполняется для каждого файла, поэтому при сбое действия копирования вы увидите, что некоторые файлы уже скопированы в место назначения и удалены из источника, а другие остаются в исходном хранилище.
Это свойство допустимо только в сценарии копирования двоичных файлов. По умолчанию имеет значение false.
No
modifiedDatetimeStart Фильтр файлов на основе атрибута: Last Modified.
Выбираются все файлы, у которых время последнего изменения больше или равно modifiedDatetimeStart и меньше modifiedDatetimeEnd. Время представлено часовым поясом UTC в формате "2018-12-01T05:00:00Z".
Свойства могут иметь значение NULL. Это означает, что фильтры атрибута файла не применяются к набору данных. Если modifiedDatetimeStart имеет значение datetime, но modifiedDatetimeEnd имеет значение NULL, это означает, что выбран файл, последний измененный атрибут которого больше или равен значению datetime. Если modifiedDatetimeEnd имеет значение datetime, но modifiedDatetimeStart имеет значение NULL, это означает, что файлы, чьи последние измененные атрибуты меньше значения datetime выбраны.
Это свойство не применяется при настройке fileListPath.
No
modifiedDatetimeEnd То же, что выше. No
enablePartitionDiscovery Для секционированных файлов укажите, следует ли анализировать секции из пути к файлу и добавлять их как дополнительные исходные столбцы.
Допустимые значения: false (по умолчанию) и true.
No
partitionRootPath Если обнаружение секций включено, укажите абсолютный корневой путь, чтобы считывать секционированные папки как столбцы данных.

Если он не указан, по умолчанию
— При использовании пути к файлу в наборе данных или списке файлов в источнике корневым путем секции считается путь, настроенный в наборе данных.
— При использовании фильтра папок подстановочных знаков корневой путь секции является подкататурой перед первым подстановочным знаком.

Предположим, что вы настроили путь в наборе данных следующим образом: "root/folder/year=2020/month=08/day=27".
— Если указать корневой путь секции как "root/folder/year=2020", действие копирования создает еще два столбца month и day значение "08" и "27" соответственно, в дополнение к столбцам внутри файлов.
— Если корневой путь секции не указан, дополнительный столбец не создается.
No
maxConcurrentConnections Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. No

Пример:

"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 поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

Ниже перечислены свойства, которые поддерживаются для Azure Data Lake Storage 1-го поколения в настройках storeSettings в приемнике копирования на основе формата.

Свойство Описание: Обязательное поле
type Для свойства type в разделе storeSettings необходимо задать значение AzureDataLakeStoreWriteSettings. Да
copyBehavior Определяет поведение копирования, когда источником являются файлы из файлового хранилища данных.

Допустимые значения:
— PreserveHierarchy (по умолчанию). Сохраняет иерархию файлов в целевой папке. Относительный путь исходного файла в исходной папке идентичен относительному пути целевого файла в целевой папке.
— FlattenHierarchy. Все файлы из исходной папки размещаются на первом уровне в целевой папке. Целевые файлы имеют автоматически сформированные имена.
— MergeFiles. Объединяет все файлы из исходной папки в один файл. Если указано имя файла, то оно присваивается объединенному файлу. В противном случае присваивается автоматически созданное имя файла.
No
expiryDateTime Указывает время окончания срока действия записанных файлов. Время представлено часовым поясом UTC в формате "2020-03-01T08:00:00Z". По умолчанию это ЗНАЧЕНИЕ NULL, что означает, что срок действия записанных файлов никогда не истекает. No
maxConcurrentConnections Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. No

Пример:

"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
    б
        file3.csv
    bx.csv
    c
        file4.csv
    cx.csv
В наборе данных:
– Путь к папке: root

В источнике действия копирования:
- Список после: a
- Список перед: b
Затем копируются следующие файлы:

root
    ax
        file2.csv
    ax.csv
    б
        file3.csv

Примеры фильтров папок и файлов

В этом разделе описываются результаты применения фильтров с подстановочными знаками к пути папки и имени файла.

folderPath fileName recursive Структура исходной папки и результат фильтрации (извлекаются файлы, выделенные полужирным шрифтом)
Folder* (Пусто, используйте значение по умолчанию) false ПапкаA
    Файл1.csv
    File2.json
    Вложенная_папка1
        File3.csv
        File4.json
        File5.csv
Другая_папкаB
    Файл6.csv
Folder* (Пусто, используйте значение по умолчанию) true ПапкаA
    Файл1.csv
    File2.json
    Вложенная_папка1
        File3.csv
        File4.json
        File5.csv
Другая_папкаB
    Файл6.csv
Folder* *.csv false ПапкаA
    Файл1.csv
    File2.json
    Вложенная_папка1
        File3.csv
        File4.json
        File5.csv
Другая_папкаB
    Файл6.csv
Folder* *.csv true ПапкаA
    Файл1.csv
    File2.json
    Вложенная_папка1
        File3.csv
        File4.json
        File5.csv
Другая_папкаB
    Файл6.csv

Примеры списков файлов

В этом разделе описывается поведение, возникающее при указании пути к списку файлов в качестве источника для действия копирования.

Предположим, что у вас есть следующая исходная структура папок и вы хотите скопировать файлы, выделенные полужирным шрифтом:

Пример исходной структуры Содержимое файла FileListToCopy.txt Настройка
root
    ПапкаA
        Файл1.csv
        File2.json
        Вложенная_папка1
            File3.csv
            File4.json
            File5.csv
    Метаданные
        FileListToCopy.txt
Файл1.csv
Вложенная_папка1/Файл3.csv
Вложенная_папка1/Файл5.csv
В наборе данных:
– Путь к папке: root/FolderA

В источнике действия копирования:
– Путь к списку файлов: root/Metadata/FileListToCopy.txt

Путь к списку файлов указывает на текстовый файл в том же хранилище данных, содержащий список файлов, которые необходимо скопировать, указав по одному файлу в строке с относительным путем к пути, заданному в наборе данных.

Примеры поведения операции копирования

В данном разделе описываются результаты выполнения операции копирования при использовании различных сочетаний значений recursive и copyBehavior.

recursive copyBehavior Структура папок источника Результаты цели
true preserveHierarchy Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая "Папка1" создается с такой же структурой, как и исходная папка:

Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
true flattenHierarchy Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая папка1 создается со следующей структурой:

Папка1
    автоматически созданное имя для "Файл1"
    автоматически созданное имя для "Файл2"
    автоматически созданное имя для "Файл3"
    автоматически созданное имя для "Файл4"
    автоматически созданное имя для "Файл5"
true mergeFiles Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая папка1 создается со следующей структурой:

Папка1
    Содержимое файлов "Файл1", "Файл2", "Файл3", "Файл4" и "Файл5" объединяется в один файл с автоматически созданным именем.
false preserveHierarchy Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая папка "Папка1" создается со следующей структурой:

Папка1
    Файл1
    Файл2

Папка "Вложенная_папка1" с файлами "Файл3", "Файл4" и "Файл5" не будет включена в эту папку.
false flattenHierarchy Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая папка "Папка1" создается со следующей структурой:

Папка1
    автоматически созданное имя для "Файл1"
    автоматически созданное имя для "Файл2"

Папка "Вложенная_папка1" с файлами "Файл3", "Файл4" и "Файл5" не будет включена в эту папку.
false mergeFiles Папка1
    Файл1
    Файл2
    Вложенная_папка1
        Файл3
        Файл4
        Файл5
Целевая папка "Папка1" создается со следующей структурой:

Папка1
    Содержимое файлов "Файл1" и "Файл2" объединяется в один файл с автоматически созданным именем. автоматически созданное имя для "Файл1"

Папка "Вложенная_папка1" с файлами "Файл3", "Файл4" и "Файл5" не будет включена в эту папку.

Сохранение списков управления доступом в Data Lake Storage 2-го поколения

Совет

Пошаговые инструкции и рекомендации по копированию данных из Azure Data Lake Storage 1-го поколения в Azure Data Lake Storage 2-го поколения см. в статье Копирование данных из Azure Data Lake Storage 1-го поколения в Azure Data Lake Storage 2-го поколения с помощью Фабрики данных Azure.

Если при обновлении с Data Lake Storage 1-го поколения до Data Lake Storage 2-го поколения требуется реплицировать списки управления доступом (ACL) вместе с файлами данных, см. сведения в разделе о сохранении списков управления доступом из Data Lake Storage 1-го поколения.

Свойства потока данных для сопоставления

При преобразовании данных в потоках данных для сопоставления можно считывать и записывать файлы из Azure Data Lake Storage 1-го поколения в следующих форматах:

Конкретные параметры приведены в документации для соответствующего формата. Дополнительные сведения см. в статьях Преобразование источника в потоке данных для сопоставления и Преобразование приемника в потоке данных для сопоставления.

Преобразование источника

При преобразовании источника можно выполнять чтение из контейнера, папки или отдельного файла в Azure Data Lake Storage 1-го поколения. Настройки управления чтением файлов находятся на вкладке Параметры источника.

Снимок экрана: вкладка

Путь с подстановочными знаками. Использование шаблона с подстановочными знаками позволяет указать службе, что необходимо перебрать каждую соответствующую папку и файл в одном преобразовании источника. Это эффективный способ обработки нескольких файлов в одном потоке. Добавьте несколько шаблонов сопоставления с подстановочными знаками с помощью значка плюса ("+"), который появляется при наведении указателя мыши на существующий шаблон с подстановочными знаками.

В исходном контейнере выберите файлы, соответствующие шаблону. В наборе данных можно указать только контейнер. Путь с подстановочными знаками должен также включать путь к папке из корневой папки.

Примеры подстановочных знаков:

  • * — представляет любой набор символов;

  • ** — представляет рекурсивную вложенность каталога;

  • ? — заменяет один символ;

  • [] — соответствует одному или нескольким символам в квадратных скобках;

  • /data/sales/**/*.csv — возвращает все файлы CSV в папке /data/sales;

  • /data/sales/20??/**/ — возвращает все файлы рекурсивно во всех соответствующих папках 20xx;

  • /data/sales/*/*/*.csv — возвращает файлы CSV, расположенные двумя уровнями ниже папки /data/sales;

  • /data/sales/2004/12/[XY]1?.csv — возвращает все CSV-файлы с декабря 2004 г., начиная с буквы X или Y, за которой следует 1 и любой один символ.

Корневой путь раздела. Если в источнике файлов имеются секционированные папки формата key=value (например, year=2019), то верхний уровень этого дерева секционированной папки можно назначить в качестве имени столбца в потоке данных.

Во-первых, задайте подстановочный знак, чтобы включить все пути, которые являются в секционированных папках, а также конечные файлы, которые вы хотите прочитать.

Снимок экрана: параметры исходного файла секции в преобразовании источника потока данных сопоставления.

Для определения верхнего уровня структуры папок используйте параметр "Корневой путь раздела". При просмотре содержимого данных с помощью предварительного просмотра данных вы увидите, что служба добавляет разрешенные секции, найденные на каждом из уровней папок.

Корневой путь раздела

Список файлов: это набор файлов. Создайте текстовый файл, который включает список относительных путей файлов для обработки. Укажите на этот текстовый файл.

Столбец для хранения имени файла: сохраните имя исходного файла в столбце в данных. Укажите здесь новое имя столбца для хранения строки имени файла.

После завершения: выберите ничего делать с исходным файлом после запуска потока данных, удалите исходный файл или переместите исходный файл. Пути для перемещения являются относительными.

Чтобы переместить исходные файлы в другое расположение после обработки, сначала выберите "Переместить" для операции с файлом. Затем задайте исходный каталог. Если вы не используете подстановочные знаки для пути, параметр from является той же папкой, что и исходная папка.

Если у вас есть исходный путь с подстановочным знаком, синтаксис выглядит следующим образом:

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

В качестве исходной папки можно указать

/data/sales

В качестве целевой папки можно указать

/backup/priorSales

В этом случае все файлы, источником которых является папка /data/sales, перемещаются в папку /backup/priorSales.

Примечание.

Операции с файлами выполняются только в том случае, если поток данных выполняется из запуска конвейера (отладка конвейера или запуск выполнения) с использованием действия выполнения потока данных в конвейере. Операции с файлами не выполняются в режиме отладки потока данных.

Фильтр по последнему изменению: вы можете фильтровать файлы, обрабатываемые путем указания диапазона дат последнего изменения. Все значения даты и времени указаны в формате UTC.

Включите запись измененных данных: если верно, вы получите новые или измененные файлы только после последнего запуска. При первом запуске всегда выполняется начальная загрузка данных, то есть получается полный моментальный снимок, а при следующих запусках записываются только новые или измененные файлы. Дополнительные сведения см. в разделе Отслеживание измененных данных.

Снимок экрана: включение отслеживания измененных данных.

Свойства приемника

В преобразовании приемника можно выполнять запись в контейнер или папку в хранилище Azure Data Lake Storage 1-го поколения. Настройки управления записью файлов находятся на вкладке Параметры.

параметры приемника

Очистить папку: определяет, очищается ли целевая папка перед записью данных.

Параметр имени файла: определяет, как целевые файлы именуются в целевой папке. Доступные параметры имени файла:

  • По умолчанию: разрешить Spark именовать файлы на основе значений ПО умолчанию PART.
  • Шаблон. Введите шаблон, который перечисляет выходные файлы на секцию. Например, кредиты[n].csv создают loans1.csv, loans2.csv и т. д.
  • На секцию: введите одно имя файла для каждой секции.
  • Как данные в столбце: задайте выходной файл значению столбца. Путь задается относительно контейнера набора данных, а не папки назначения. Если у вас есть путь к папке в наборе данных, он переопределяется.
  • Выходные данные в один файл: объединение секционированных выходных файлов в один именованный файл. Путь задается относительно папки набора данных. Помните, что операция слияния может завершиться ошибкой на основе размера узла. Этот параметр не рекомендуется использовать для больших наборов данных.

В кавычках все: определяет, следует ли заключать все значения в кавычки

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Свойства действия GetMetadata

Подробные сведения об этих свойствах см. в статье Действие GetMetadata.

Свойства действия удаления

Подробные сведения об этих свойствах см. в статье Действие удаления.

Устаревшие модели

Примечание.

Следующие модели по-прежнему поддерживаются на условиях "как есть" для обеспечения обратной совместимости. В дальнейшем рекомендуется использовать новую модель, упомянутую в разделах выше. Пользовательский интерфейс разработки был изменен для создания новой модели.

Устаревшая модель набора данных

Свойство Описание: Обязательное поле
type Свойство type для набора данных должно иметь значение AzureDataLakeStoreFile. Да
folderPath Путь к папке в Data Lake Store. Если это свойство не указано, будет использоваться корневая папка.

Фильтр подстановочных знаков не поддерживается. Допустимые подстановочные знаки: * (соответствует нулю или нескольким символам) и ? (соответствует нулю или одному символу). Используйте ^ для экранирования знаков, если фактическое имя папки содержит подстановочный знак или этот escape-символ.

Пример: rootfolder/subfolder/. Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
No
fileName Имя или фильтр подстановочных знаков для файлов по указанному folderPath. Если этому свойству не присвоить значение, набор данных будет указывать на все файлы в папке.

Допустимые подстановочные знаки для фильтра: * (соответствует нулю или нескольким символам) и ? (соответствует нулю или одному символу).
Пример 1. "fileName": "*.csv"
Пример 2. "fileName": "???20180427.txt"
Используйте ^ для экранирования символов, если фактическое имя файла содержит подстановочный знак или этот escape-символ.

Если имя файла не указано для выходного набора данных и сохранитьHierarchy не указано в приемнике действий, действие копирования автоматически создает имя файла со следующим шаблоном: "Data".[ идентификатор GUID выполнения действия]. [GUID, если FlattenHierarchy]. [формат, если настроено]. [сжатие, если настроено]", например "Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz". При копировании из табличного источника с использованием имени таблицы вместо запроса формат имени будет таким: "[имя таблицы].[фoрмат].[сжатие, если настроено]". Например: "MyTable.csv".
No
modifiedDatetimeStart Фильтр файлов на основе атрибута времени последнего изменения. Выбираются все файлы, у которых время последнего изменения больше или равно modifiedDatetimeStart и меньше modifiedDatetimeEnd. Время представлено часовым поясом UTC в формате "2018-12-01T05:00:00Z".

Включение этого параметра в случае, если требуется использовать фильтр файлов с огромными объемами файлов, влияет на общую производительность перемещения данных.

Свойства могут иметь значение NULL. Это означает, что фильтры атрибута файла не применяются к набору данных. Если для параметра modifiedDatetimeStart задано значение даты и времени, но параметр modifiedDatetimeEnd имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения больше указанного значения даты и времени или равен ему. Если для параметра modifiedDatetimeEnd задано значение даты и времени, но параметр modifiedDatetimeStart имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения меньше указанного значения даты и времени.
No
modifiedDatetimeEnd Фильтр файлов на основе атрибута времени последнего изменения. Выбираются все файлы, у которых время последнего изменения больше или равно modifiedDatetimeStart и меньше modifiedDatetimeEnd. Время представлено часовым поясом UTC в формате "2018-12-01T05:00:00Z".

Включение этого параметра в случае, если требуется использовать фильтр файлов с огромными объемами файлов, влияет на общую производительность перемещения данных.

Свойства могут иметь значение NULL. Это означает, что фильтры атрибута файла не применяются к набору данных. Если для параметра modifiedDatetimeStart задано значение даты и времени, но параметр modifiedDatetimeEnd имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения больше указанного значения даты и времени или равен ему. Если для параметра modifiedDatetimeEnd задано значение даты и времени, но параметр modifiedDatetimeStart имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения меньше указанного значения даты и времени.
No
format Если требуется скопировать файлы между файловыми хранилищами "как есть" (двоичное копирование), можно пропустить раздел форматирования в определениях входного и выходного наборов данных.

Если нужно проанализировать или создать файлы определенного формата, поддерживаются следующие типы форматов файлов: TextFormat, JsonFormat, AvroFormat, OrcFormat и ParquetFormat. Свойству type в разделе format необходимо присвоить одно из этих значений. Дополнительные сведения см. в разделах о текстовом формате, формате JSON, формате Avro, формате Orc и формате Parquet.
Нет (только для сценария двоичного копирования)
compression Укажите тип и уровень сжатия данных. Дополнительные сведения см. в разделе Поддержка сжатия.
Поддерживаемые типы: GZip, Deflate, BZip2 и ZipDeflate.
Поддерживаемые уровни: Optimal и Fastest.
No

Совет

Чтобы скопировать все файлы в папке, укажите только 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. No
maxConcurrentConnections Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. No

Пример:

"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. Объединяет все файлы из исходной папки в один файл. Если указано имя файла, то оно присваивается объединенному файлу. В противном случае имя файла создается автоматически.
No
maxConcurrentConnections Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. No

Пример:

"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 1-го поколения, если включен параметр Включить отслеживание измененных данных (предварительная версия) в преобразовании источника потока данных для сопоставления. Этот параметр соединителя позволяет считывать только новые или обновленные файлы и применять преобразования перед загрузкой преобразованных данных в нужные целевые наборы.

Ни в коем случае не изменяйте имена конвейера и действия, чтобы контрольная точка последнего запуска всегда была доступна для анализа и получения изменений. При изменении имени конвейера или имени действия контрольная точка будет сброшена, и вы начнете с начала следующего запуска.

При отладке конвейера также можно использовать параметр Enable change data capture (Preview) (Включение отслеживания измененных данных (предварительная версия)). Контрольная точка сбрасывается при обновлении браузера во время отладки. После выполнения отладки вы можете опубликовать и активировать конвейер. Выполнение всегда начинается с начала, даже если при запуске отладки была создана контрольная точка.

При необходимости вы можете повторно запустить конвейер из раздела мониторинга. При этом изменения всегда получаются из записи контрольной точки в выбранном запуске конвейера.

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.