Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Фабрика данных Azure
Azure Synapse Analytics
Подсказка
Попробуйте Data Factory in Microsoft Fabric, универсальное аналитическое решение для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этом кратком руководстве описывается, как использовать PowerShell для создания фабрики данных Azure. Конвейер, который вы создадите в этой фабрике данных, копирует данные из одной папки в другую в хранилище BLOB-объектов Azure. Инструкции по преобразованию данных с помощью фабрики данных Azure см. в руководстве по преобразованию данных с помощью Spark.
Замечание
Эта статья не содержит подробных сведений о службе фабрики данных. Общие сведения о службе Фабрики данных Azure см. в статье "Общие сведения о фабрике данных Azure".
Предпосылки
Подписка Azure
Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Роли в Azure
Чтобы создать экземпляры Фабрики данных, учетная запись пользователя, используемая для входа в Azure, должна быть участником роли сотрудника, роли владельца или администратором подписки Azure. Чтобы просмотреть имеющиеся разрешения в подписке на портале Azure, выберите имя пользователя в правом верхнем углу и щелкните значок ... для выбора дополнительных параметров, а затем выберите Мои разрешения. Если у вас есть доступ к нескольким подпискам, выберите соответствующую подписку.
Чтобы создавать дочерние ресурсы для службы "Фабрика данных", в том числе наборы данных, связанные службы, конвейеры, триггеры и среды выполнения интеграции, а также управлять ими, выполните следующие требования:
- Чтобы создавать дочерние ресурсы и управлять ими на портале Azure, необходимо иметь роль Участник Фабрики данных на уровне группы ресурсов или более высоком.
- Чтобы создавать дочерние ресурсы и управлять ими с помощью PowerShell или пакета SDK, достаточно роли Участник на уровне ресурса или выше.
Примеры инструкций о том, как добавить пользователя к роли, см. в статье Добавление ролей.
Дополнительные сведения см. в следующих статьях:
Учетная запись хранения Azure
В этом кратком руководстве учетная запись общего назначения Azure Storage (конкретно хранилище BLOB-объектов) используется как для исходного, так и для целевого хранилища данных. Если у вас нет учетной записи хранения Azure общего назначения, см. инструкции по ее созданию.
Получение имени учетной записи хранения
Для этого быстрого запуска вам потребуется имя учетной записи хранения Azure. Процедура ниже предоставляет шаги для получения имени вашей учетной записи хранения.
- В веб-браузере перейдите к Портал Azure и выполните вход с помощью имени пользователя и пароля Azure.
- В меню портала Azure выберите Все службы, а затем выберите Хранилище>Учетные записи хранения. Можно также выполнить поиск на любой странице и выбрать Учетные записи хранения.
- На странице Учетные записи хранения найдите с помощью фильтра свою учетную запись хранения (при необходимости), а затем выберите эту учетную запись.
Можно также выполнить поиск на любой странице и выбрать Учетные записи хранения.
Создайте контейнер BLOB
В этом разделе вы создадите контейнер BLOB с именем adftutorial в Azure Blob Storage.
На странице учетной записи хранения выберите Общие сведения>Контейнеры.
На панели инструментов страницы <Имя учетной записи> - Контейнеры выберите Контейнер.
В диалоговом окне Создание контейнера введите 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
Замечание
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать, ознакомьтесь с разделом Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция 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 должно быть глобально уникальным. Если появляется следующая ошибка, измените имя и повторите попытку.
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Чтобы создать экземпляры фабрики данных, учетная запись пользователя, используемая для входа в Azure, должна быть участником илиролью владельца или администратором подписки Azure.
Чтобы получить список регионов Azure, в которых в настоящее время доступна Фабрика данных, выберите интересующие вас регионы на следующей странице, а затем разверните раздел Аналитика, чтобы найти пункт Фабрика данных: Доступность продуктов по регионам. Хранилища данных (служба хранилища Azure, база данных SQL Azure и т. д.) и вычисления (HDInsight и т. д.), используемые фабрикой данных, могут располагаться в других регионах.
Создание связанной службы
Создайте связанные службы в фабрике данных, чтобы связать хранилища данных и вычислительные службы с фабрикой данных. В этом быстром старте вы создадите связанную службу хранилища Azure, которая используется как в качестве источника, так и в качестве приемника. Связанная служба содержит сведения о подключении, которые служба фабрики данных использует во время выполнения для подключения к ней.
Подсказка
В этом кратком руководстве вы используете ключ учетной записи в качестве типа проверки подлинности для хранилища данных, но при необходимости можно выбрать другие поддерживаемые методы проверки подлинности: 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, созданную в предыдущем разделе. Входной набор данных представляет исходные данные в папке входных данных. В определении входного набора данных укажите контейнер 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 выберите "Обновить ", чтобы просмотреть выходную папку.
В списке папок выберите output.
Убедитесь, что файл emp.txt скопирован в папку output.
Очистите ресурсы
Вы можете очистить ресурсы, созданные в Quickstart, двумя способами. Вы можете удалить группу ресурсов Azure, которая содержит все связанные ресурсы. Если вы хотите сохранить другие ресурсы, удалите только фабрику данных, созданную в рамках данного руководства.
При удалении группы ресурсов будут удалены все входящие в нее ресурсы, включая фабрики данных. Выполните следующую команду, чтобы удалить всю группу ресурсов:
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Замечание
Удаление группы ресурсов может занять некоторое время. Пожалуйста, будьте терпеливы с процессом
Если вы хотите удалить только фабрику данных, а не всю группу ресурсов, выполните следующую команду:
Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName
Связанный контент
В этом примере конвейер данных копирует данные из одного местоположения в другое местоположение в хранилище Azure Blob. Перейдите к руководствам, чтобы узнать об использовании фабрики данных в различных сценариях.