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

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

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

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

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

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

① Среда выполнения интеграции 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. Необходимо для приемника
имя_группы_ресурсов Имя группы ресурсов Azure, к которой принадлежит учетная запись Data Lake Store. Необходимо для приемника
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать Azure Integration Runtime или локальную среду IR (если хранилище данных расположено в частной сети). Если это свойство не задано, используется Azure Integration Runtime по умолчанию. нет

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

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

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

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

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

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

Свойство Описание Обязательно
servicePrincipalId Укажите идентификатора клиента приложения. Да
servicePrincipalKey Укажите ключ приложения. Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да
tenant Укажите сведения о клиенте, такие как доменное имя или идентификатор клиента, в котором находится приложение. Эти сведения можно получить, наведя указатель мыши на правый верхний угол страницы портала Azure. Да
azureCloudType Для проверки подлинности субъекта-службы укажите тип облачной среды Azure, в которой зарегистрировано приложение Azure Active Directory.
Допустимые значения: 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 и в нее.

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

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

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

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

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

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

Свойство Описание Обязательное значение
credentials Укажите назначаемое пользователем управляемое удостоверение в качестве объекта учетных данных. Да

Пример.

{
    "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 Путь к папке. Если вы хотите использовать подстановочный знак для фильтрации папок, пропустите этот параметр и укажите его в параметрах источника действия. Нет
fileName Имя файла в заданном пути к папке. Если вы хотите использовать подстановочный знак для фильтрации файлов, пропустите этот параметр и укажите его в параметрах источника действия. Нет

Пример.

{
    "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-го поколения, который более эффективен, чем фильтр с подстановочными знаками.
Служба применяет этот фильтр к пути, определенному в наборе данных. Поддерживается только один уровень сущности. Дополнительные примеры см. в разделе Примеры фильтров по диапазону имен.
Нет
ВАРИАНТ 2. Диапазон имен
- listBefore
Получение папок и файлов, имя которых находится до этого значения (включая его) в алфавитном порядке. Используется фильтр на стороне службы ADLS 1-го поколения, который более эффективен, чем фильтр с подстановочными знаками.
Служба применяет этот фильтр к пути, определенному в наборе данных. Поддерживается только один уровень сущности. Дополнительные примеры см. в разделе Примеры фильтров по диапазону имен.
нет
ВАРИАНТ 3. Подстановочный знак
- wildcardFolderPath
Путь к папке с подстановочными знаками для фильтрации исходных папок.
Допустимые подстановочные знаки: * (соответствует нулю или большему количеству знаков) и ? (соответствует нулю или одному знаку). Для экранирования используйте ^, если фактическое имя папки содержит подстановочный знак или escape-символ.
Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
нет
ВАРИАНТ 3. Подстановочный знак
- wildcardFileName
Имя файла с подстановочными знаками в заданном folderPath/wildcardFolderPath для фильтрации исходных папок.
Допустимые подстановочные знаки: * (соответствует нулю или большему количеству знаков) и ? (соответствует нулю или одному знаку). Для экранирования используйте ^, если фактическое имя файла содержит подстановочный знак или escape-символ. Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
Да
ВАРИАНТ 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", действие копирования в дополнение к указанным в файлах столбцам создаст еще два столбца, month и day, со значениями "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 поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

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

Свойство Описание Обязательно
type Для свойства type в разделе storeSettings необходимо задать значение 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"
                }
            }
        }
    }
]

Примеры фильтров по диапазону имен

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

Пример исходной структуры Параметр Configuration Результат
корневой
    а
        file.csv
    ax
        file2.csv
    ax.csv
    b
        file3.csv
    bx.csv
    с
        file4.csv
    cx.csv
В наборе данных:
— Путь к папке: root

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

корневой
    ax
        file2.csv
    ax.csv
    b
        file3.csv

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

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

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

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

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

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

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

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

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

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

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

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

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

Папка1
    автоматически созданное имя для "Файл1"
    автоматически созданное имя для "Файл2"
    автоматически созданное имя для "Файл3"
    автоматически созданное имя для "Файл4"
    автоматически созданное имя для "Файл5"
Да 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), то верхний уровень этого дерева секционированной папки можно назначить в качестве имени столбца в потоке данных.

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

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

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

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

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

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

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

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

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

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

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

/data/sales

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

/backup/priorSales

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Если fileName для выходного набора данных не указан, а preserveHierarchy не указан в приемнике действия, действие копирования автоматически создаст имя файла по следующему шаблону: "Data.[GUID идентификатора выполнения действия].[GUID, если поведение — FlattenHierarchy].[формат, если настроено].[сжатие, если настроено] ". Например: "Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz". При копировании из табличного источника с использованием имени таблицы вместо запроса формат имени будет таким: " [имя таблицы].[фoрмат].[сжатие, если настроено] ". Например: "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. Свойству type в разделе format необходимо присвоить одно из этих значений. Дополнительные сведения см. в разделах о текстовом формате, формате JSON, формате Avro, формате Orc и формате Parquet.
Нет (только для сценария двоичного копирования)
compression Укажите тип и уровень сжатия данных. Дополнительные сведения см. в разделе Поддержка сжатия.
Поддерживаемые типы: GZip, Deflate, BZip2 и ZipDeflate.
Поддерживаемые уровни: Optimal и Fastest.
Нет

Совет

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

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

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

Вы всегда можете повторно запустить конвейер из раздела мониторинга. Этот процесс всегда извлекает изменения с момента контрольной точки, записанной в выбранном запуске конвейера.

Дальнейшие действия

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