Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНИМО К:
Azure Data Factory
Azure Synapse Analytics
Подсказка
Data Factory в Microsoft Fabric — это следующее поколение Azure Data Factory с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.
В этом кратком руководстве описывается, как использовать PowerShell для создания Azure Data Factory. Конвейер, создаваемый в этой фабрике данных, копирует данные из одной папки в другую в хранилище BLOB-объектов Azure. Руководство по преобразованию данных с помощью Azure Data Factory см. в разделе Учебник: преобразование данных с помощью Spark.
Замечание
Эта статья не содержит подробных сведений о службе фабрики данных. Общие сведения о службе Azure Data Factory см. в разделе Introduction to Azure Data Factory.
Предпосылки
подписка Azure
Если у вас нет подписки Azure, создайте учетную запись free перед началом работы.
роли Azure
Чтобы создать экземпляры Data Factory, учетная запись пользователя, используемая для входа в Azure, должна быть членом роли contributor или owner, или administrator подписки Azure. Чтобы просмотреть разрешения, которые есть в подписке, перейдите на портал Azure выберите имя пользователя в правом верхнем углу, выберите "... значок " для получения дополнительных параметров и выберите Ми разрешения. Если у вас есть доступ к нескольким подпискам, выберите соответствующую подписку.
Чтобы создавать дочерние ресурсы для службы "Фабрика данных", в том числе наборы данных, связанные службы, конвейеры, триггеры и среды выполнения интеграции, а также управлять ими, выполните следующие требования:
- Чтобы создавать и управлять дочерними ресурсами на портале Azure, необходимо принадлежать к роли Участник Data Factory на уровне группы ресурсов или выше.
- Чтобы создавать дочерние ресурсы и управлять ими с помощью PowerShell или пакета SDK, достаточно роли Участник на уровне ресурса или выше.
Примеры инструкций о том, как добавить пользователя к роли, см. в статье Добавление ролей.
Дополнительные сведения см. в следующих статьях:
учетная запись Azure Storage
Вы используете учетную запись Azure Storage общего назначения (в частности BLOB-хранилище) как хранилища данных источника и назначения в этом кратком руководстве. Если у вас нет учетной записи Azure Storage общего назначения, см. статью Создание учетной записи хранения, чтобы создать её.
Получение имени учетной записи хранения
Для этого краткого руководства вам потребуется имя учетной записи Azure Storage. Процедура ниже предоставляет шаги для получения имени вашей учетной записи хранения.
- В веб-браузере перейдите на портал Azure и войдите с помощью имени пользователя и пароля Azure.
- В меню портала Azure выберите Все службы, затем выберите Хранилище>Учетные записи хранения. Можно также выполнить поиск на любой странице и выбрать Учетные записи хранения.
- На странице Учетные записи хранения найдите с помощью фильтра свою учетную запись хранения (при необходимости), а затем выберите эту учетную запись.
Можно также выполнить поиск на любой странице и выбрать Учетные записи хранения.
Создайте контейнер BLOB
В этом разделе описано, как создать контейнер BLOB-объектов с именем adftutorial в хранилище BLOB-объектов Azure.
На странице учетной записи хранения выберите Общие сведения>Контейнеры.
На панели инструментов страницы <Имя учетной записи> - Контейнеры выберите Контейнер.
В диалоговом окне Создание контейнера введите adftutorial в качестве имени и щелкните ОК. Страница <Имя учетной записи> - Контейнеры будет обновлена, и в списке появится контейнер adftutorial.
Добавьте входную папку и файл для контейнера BLOB-объектов.
В этом разделе показано, как создать папку с именем input в созданном вами контейнере и отправить пример файла в эту папку. Прежде чем начать, откройте текстовый редактор, например Блокнот и создайте файл emp.txt с таким содержимым:
John, Doe
Jane, Doe
Сохраните файл в папкеC:\ADFv2QuickStartPSH. (Если папка еще не существует, создайте ее.) Затем вернитесь на портал Azure и выполните следующие действия:
На странице <Имя учетной записи> - Контейнеры, на которой вы ранее остановились, выберите adftutorial из обновленного списка контейнеров.
- Если вы закрыли окно или перешли на другую страницу, снова войдите на портал Azure.
- В меню портала Azure выберите Все службы, затем выберите Хранилище>Учетные записи хранения. Можно также выполнить поиск на любой странице и выбрать Учетные записи хранения.
- Выберите свою учетную запись хранения, а затем выберите Контейнеры>adftutorial.
На панели инструментов adftutorial страницы контейнера выберите Отправка.
На странице Загрузка BLOB-объектов выберите поле Файлы, а затем перейдите к файлу emp.txt и выберите его.
Разверните заголовок Дополнительно. Теперь страница отображается, как показано ниже:
В поле Отправить в папку введите input.
Нажмите кнопку Отправить. В списке должен отобразиться файл emp.txt с состоянием отправки.
Щелкните значок Закрыть (крестик X), чтобы закрыть страницу Загрузка BLOB-объекта.
Не закрывайте страницу контейнера adftutorial. Вы используете это, чтобы проверить выходные данные в конце этого быстрого старта.
Azure PowerShell
Замечание
Мы рекомендуем использовать модуль Az PowerShell Azure для взаимодействия с Azure. Сведения о начале работы см. в разделе Install Azure PowerShell. Сведения о миграции в модуль Az PowerShell см. в статье Migrate Azure PowerShell из AzureRM в Az.
Установите последние модули Azure PowerShell, следуя инструкциям в Как установить и настроить Azure PowerShell.
Предупреждение
Если вы не используете последние версии модуля PowerShell и Фабрики данных, при выполнении команд можно столкнуться с ошибками десериализации.
Вход в PowerShell
Запустите PowerShell на компьютере. Не закрывайте PowerShell до конца этой краткой инструкции. При закрытии и повторном открытии необходимо снова выполнить эти команды.
Выполните следующую команду и введите то же Azure имя пользователя и пароль, которые вы используете для входа на портал Azure:
Connect-AzAccountЧтобы просмотреть все подписки для этой учетной записи, выполните следующую команду:
Get-AzSubscriptionЕсли вы видите несколько подписок, связанных с учетной записью, выполните следующую команду, чтобы выбрать подписку, с которой вы хотите работать. Замените SubscriptionId идентификатором подписки Azure:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"
Создание фабрики данных
Определите переменную для имени группы ресурсов, которую в дальнейшем можно будет использовать в командах PowerShell. Скопируйте следующий текст команды в PowerShell, укажите имя группы ресурсов Azure в двойных кавычках и выполните команду. Например:
"ADFQuickStartRG".$resourceGroupName = "ADFQuickStartRG";Если группа ресурсов уже имеется, вы можете не перезаписывать ее. Назначьте переменной
$ResourceGroupNameдругое значение и снова выполните команду.Чтобы создать группу ресурсов Azure, выполните следующую команду:
$ResGrp = New-AzResourceGroup $resourceGroupName -location 'East US'Если группа ресурсов уже имеется, вы можете не перезаписывать ее. Назначьте переменной
$ResourceGroupNameдругое значение и снова выполните команду.Определите переменную для имени фабрики данных.
Это важно
Обновите имя фабрики данных, чтобы оно стало глобально уникальным. Например, ADFTutorialFactorySP1127.
$dataFactoryName = "ADFQuickStartFactory";Чтобы создать фабрику данных, выполните следующий командлет Set-AzDataFactoryV2 , используя свойство Location и ResourceGroupName из переменной $ResGrp:
$DataFactory = Set-AzDataFactoryV2 -ResourceGroupName $ResGrp.ResourceGroupName ` -Location $ResGrp.Location -Name $dataFactoryName
Обратите внимание на следующие моменты:
Имя Azure Data Factory должно быть глобально уникальным. Если появляется следующая ошибка, измените имя и повторите попытку.
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Чтобы создать экземпляры Data Factory, учетная запись пользователя, используемая для входа в Azure, должна быть членом ролей contributor, owner или administrator подписки Azure.
В списке регионов Azure, в которых в настоящее время доступен Data Factory, выберите интересующие вас регионы на следующей странице, а затем разверните раздел Analytics, чтобы найти Data Factory: Продукты, доступные по регионам. Хранилища данных (Azure Storage, Azure SQL Database и т. д.) и вычислительные ресурсы (HDInsight и т. д.), используемые фабрикой данных, могут находиться в других регионах.
Создание связанной службы
Создайте связанные службы в фабрике данных, чтобы связать хранилища данных и вычислительные службы с фабрикой данных. В этом кратком руководстве вы создадите связанную службу Azure Storage, которая используется как источник и как приемное хранилище. Связанная служба содержит сведения о подключении, которые служба фабрики данных использует во время выполнения для подключения к ней.
Подсказка
В этом кратком руководстве вы используете ключ учетной записи в качестве типа проверки подлинности для хранилища данных, но при необходимости можно выбрать другие поддерживаемые методы проверки подлинности: URI SAS, *Сервисный принципал и Управляемое удостоверение. Дополнительные сведения см. в соответствующих разделах этой статьи. Чтобы безопасно хранить секреты для хранилищ данных, также рекомендуется использовать Azure Key Vault. Дополнительные сведения см. в этой статье.
Создайте JSON-файл с именемAzureStorageLinkedService.json в папке C:\ADFv2QuickStartPSH со следующим содержимым: (Создайте папку ADFv2QuickStartPSH, если она еще не существует.).
Это важно
Замените <accountName> и <accountKey> именем и ключом учетной записи хранения Azure перед сохранением файла.
{ "name": "AzureStorageLinkedService", "properties": { "annotations": [], "type": "AzureBlobStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.windows.net" } } }Если вы используете Блокнот, выберите Все файлы в поле Сохранить как тип в диалоговом окне Сохранить как. В противном случае он может добавить
.txtрасширение в файл. Например:AzureStorageLinkedService.json.txt. Если вы создаете файл в проводнике перед открытием в Блокноте, возможно, расширение не отображается.txt, так как параметр "Скрыть расширения для известных типов файлов " устанавливается по умолчанию..txtУдалите расширение, прежде чем перейти к следующему шагу.В PowerShell перейдите в папку ADFv2QuickStartPSH .
Set-Location 'C:\ADFv2QuickStartPSH'Выполните командлет Set-AzDataFactoryV2LinkedService, чтобы создать службу, связанную с AzureStorageLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName -Name "AzureStorageLinkedService" ` -DefinitionFile ".\AzureStorageLinkedService.json"Ниже приведен пример выходных данных:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureBlobStorageLinkedService
Создайте наборы данных.
В этой процедуре создается два набора данных: InputDataset и OutputDataset. Эти наборы данных имеют тип Binary. Они ссылаются на связанную службу Azure Storage, созданную в предыдущем разделе. Входной набор данных представляет исходные данные в папке входных данных. В определении входного набора данных укажите контейнер BLOB-объектов (adftutorial), папку (входные данные) и файл (emp.txt), содержащий исходные данные. Выходной набор данных представляет данные, которые копируются в место назначения. В определении выходного набора данных укажите контейнер BLOB-объектов (adftutorial), папку (выходные данные) и файл, в который копируются данные.
Создайте JSON-файл с именемInputDataset.json в папке C:\ADFv2QuickStartPSH со следующим содержимым:
{ "name": "InputDataset", "properties": { "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" }, "annotations": [], "type": "Binary", "typeProperties": { "location": { "type": "AzureBlobStorageLocation", "fileName": "emp.txt", "folderPath": "input", "container": "adftutorial" } } } }Чтобы создать набор данных: InputDataset, выполните командлет Set-AzDataFactoryV2Dataset .
Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName -Name "InputDataset" ` -DefinitionFile ".\InputDataset.json"Ниже приведен пример выходных данных:
DatasetName : InputDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.BinaryDatasetПовторите эти шаги, чтобы создать выходной набор данных. Создайте JSON-файл с именемOutputDataset.json в папке C:\ADFv2QuickStartPSH со следующим содержимым:
{ "name": "OutputDataset", "properties": { "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" }, "annotations": [], "type": "Binary", "typeProperties": { "location": { "type": "AzureBlobStorageLocation", "folderPath": "output", "container": "adftutorial" } } } }Выполните командлет Set-AzDataFactoryV2Dataset, чтобы создать OutDataset.
Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName -Name "OutputDataset" ` -DefinitionFile ".\OutputDataset.json"Ниже приведен пример выходных данных:
DatasetName : OutputDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
Создание конвейера
В этой процедуре создается конвейер с действием копирования, использующим входные и выходные наборы данных. Действие копирования копирует данные из файла, указанного в параметрах входного набора данных, в файл, указанный в параметрах выходного набора данных.
Создайте JSON-файл с именемAdfv2QuickStartPipeline.json в папке C:\ADFv2QuickStartPSH со следующим содержимым:
{ "name": "Adfv2QuickStartPipeline", "properties": { "activities": [ { "name": "CopyFromBlobToBlob", "type": "Copy", "dependsOn": [], "policy": { "timeout": "7.00:00:00", "retry": 0, "retryIntervalInSeconds": 30, "secureOutput": false, "secureInput": false }, "userProperties": [], "typeProperties": { "source": { "type": "BinarySource", "storeSettings": { "type": "AzureBlobStorageReadSettings", "recursive": true } }, "sink": { "type": "BinarySink", "storeSettings": { "type": "AzureBlobStorageWriteSettings" } }, "enableStaging": false }, "inputs": [ { "referenceName": "InputDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "OutputDataset", "type": "DatasetReference" } ] } ], "annotations": [] } }Чтобы создать конвейер: Adfv2QuickStartPipeline, выполните командлет Set-AzDataFactoryV2Pipeline .
$DFPipeLine = Set-AzDataFactoryV2Pipeline ` -DataFactoryName $DataFactory.DataFactoryName ` -ResourceGroupName $ResGrp.ResourceGroupName ` -Name "Adfv2QuickStartPipeline" ` -DefinitionFile ".\Adfv2QuickStartPipeline.json"
Создание конвейера
На этом шаге вы создадите запуск конвейера.
Выполните командлет Invoke-AzDataFactoryV2Pipeline , чтобы создать запуск конвейера. Командлет возвращает идентификатор запуска конвейера для мониторинга в будущем.
$RunId = Invoke-AzDataFactoryV2Pipeline `
-DataFactoryName $DataFactory.DataFactoryName `
-ResourceGroupName $ResGrp.ResourceGroupName `
-PipelineName $DFPipeLine.Name
Мониторинг конвейера
Выполните следующий скрипт PowerShell, чтобы непрерывно проверить состояние выполнения конвейера, пока не завершится копирование данных. Скопируйте и вставьте следующий скрипт в окне PowerShell и нажмите клавишу ВВОД.
while ($True) { $Run = Get-AzDataFactoryV2PipelineRun ` -ResourceGroupName $ResGrp.ResourceGroupName ` -DataFactoryName $DataFactory.DataFactoryName ` -PipelineRunId $RunId if ($Run) { if ( ($Run.Status -ne "InProgress") -and ($Run.Status -ne "Queued") ) { Write-Output ("Pipeline run finished. The status is: " + $Run.Status) $Run break } Write-Output ("Pipeline is running...status: " + $Run.Status) } Start-Sleep -Seconds 10 }Ниже приведен пример выходных данных выполнения конвейера:
Pipeline is running...status: InProgress Pipeline run finished. The status is: Succeeded ResourceGroupName : ADFQuickStartRG DataFactoryName : ADFQuickStartFactory RunId : 00000000-0000-0000-0000-0000000000000 PipelineName : Adfv2QuickStartPipeline LastUpdated : 8/27/2019 7:23:07 AM Parameters : {} RunStart : 8/27/2019 7:22:56 AM RunEnd : 8/27/2019 7:23:07 AM DurationInMs : 11324 Status : Succeeded Message :Запустите следующий скрипт, извлекающий сведения о выполнении действия копирования, например размер записанных и прочитанных данных.
Write-Output "Activity run details:" $Result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $DataFactory.DataFactoryName -ResourceGroupName $ResGrp.ResourceGroupName -PipelineRunId $RunId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) $Result Write-Output "Activity 'Output' section:" $Result.Output -join "`r`n" Write-Output "Activity 'Error' section:" $Result.Error -join "`r`n"Убедитесь, что вы увидите выходные данные, аналогичные следующему примеру результата выполнения действия:
ResourceGroupName : ADFQuickStartRG DataFactoryName : ADFQuickStartFactory ActivityRunId : 00000000-0000-0000-0000-000000000000 ActivityName : CopyFromBlobToBlob PipelineRunId : 00000000-0000-0000-0000-000000000000 PipelineName : Adfv2QuickStartPipeline Input : {source, sink, enableStaging} Output : {dataRead, dataWritten, filesRead, filesWritten...} LinkedServiceName : ActivityRunStart : 8/27/2019 7:22:58 AM ActivityRunEnd : 8/27/2019 7:23:05 AM DurationInMs : 6828 Status : Succeeded Error : {errorCode, message, failureType, target} Activity 'Output' section: "dataRead": 20 "dataWritten": 20 "filesRead": 1 "filesWritten": 1 "sourcePeakConnections": 1 "sinkPeakConnections": 1 "copyDuration": 4 "throughput": 0.01 "errors": [] "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (Central US)" "usedDataIntegrationUnits": 4 "usedParallelCopies": 1 "executionDetails": [ { "source": { "type": "AzureBlobStorage" }, "sink": { "type": "AzureBlobStorage" }, "status": "Succeeded", "start": "2019-08-27T07:22:59.1045645Z", "duration": 4, "usedDataIntegrationUnits": 4, "usedParallelCopies": 1, "detailedDurations": { "queuingDuration": 3, "transferDuration": 1 } } ] Activity 'Error' section: "errorCode": "" "message": "" "failureType": "" "target": "CopyFromBlobToBlob"
Проверка развернутых ресурсов
Конвейер автоматически создает выходную папку в контейнере BLOB adftutorial. Затем он копирует файл emp.txt из входной папки в выходную.
На портале Azure на странице контейнера adftutorial выберите Refresh, чтобы просмотреть выходную папку.
В списке папок выберите output.
Убедитесь, что файл emp.txt скопирован в папку output.
Очистите ресурсы
Вы можете очистить ресурсы, созданные в Quickstart, двумя способами. Вы можете удалить группу ресурсов Azure, которая включает все ресурсы в группе ресурсов. Если вы хотите сохранить другие ресурсы, удалите только фабрику данных, созданную в рамках данного руководства.
При удалении группы ресурсов будут удалены все входящие в нее ресурсы, включая фабрики данных. Выполните следующую команду, чтобы удалить всю группу ресурсов:
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Замечание
Удаление группы ресурсов может занять некоторое время. Пожалуйста, будьте терпеливы с процессом
Если вы хотите удалить только фабрику данных, а не всю группу ресурсов, выполните следующую команду:
Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName
Связанный контент
Pipeline в этом примере копирует данные из одного места в другое место в хранилище блобов Azure. Перейдите к руководствам, чтобы узнать об использовании фабрики данных в различных сценариях.