- PVSM.RU - https://www.pvsm.ru -
Несколько месяцев назад в виде preview появился сервис Azure Data Factory, и наконец-то у меня дошли руки с ним разобраться.
Основной смысл этого проекта в том, чтобы дать возможность брать различные источники данных, связывать их с обработчиками и получать очищенные данные на выходе.
Такой своеобразный аналог SQL Server Integration Service. Построил pipeline (конвейер обработки) и на выходе получил результат. При этом в качестве источника данных можно использовать SQL Azure, SQL Server (в том числе и не в Azure), а также Blob, Table, Queue из Storage Account.
Конечно с SSIS на порядок более мощный инструмент, но это самое близкое сравнение приходящее на ум.
Чтобы понять что такое ADF надо разобраться с его терминологий [1].
Как это выглядит пошагово [3]:
Особенность на текущий момент в том, что мы не можем сделать это через интерфейс. Придется использовать Powershell командлеты.
Надеюсь, в будущем команда сделает экспорт какой-нибудь или графический wizard, но пока так.
Точно таким же образом создается выходная таблица. Т.к. если есть вход, значит должен быть и выход.
Самое важное я выделил — это имена входящих и исходящих таблиц, их типы указаны в трансформации.
Это достаточно простой пример.
Ничто нам не мешает выход одной активности передавать на вход другой или сделать несколько источников данных для активности. Все упирается в ваши потребности.
Команда разработчиков предоставила нам табличку, показывающую, что и куда можно переливать.
Понятно, что внутри Azure все и везде. А вот если мы подключаем либо свой локальный SQL Server, либо созданный на виртуальной машине (что по сути одно и тоже, с точностью до Data Management Gateway), то мы уже ограничены в направлениях. Хотя если мы переливаем данные с одного локального SQL Server на другой, то не очень понятно, зачем тут Data Factory вообще: берем SQL Integration Service и поехали!
В этой же статье [4] и набор свойств для каждого источника/приемника данных перечислен.
.Net code activity [5]
Но это были всего лишь Copy Activity. Если мы хотим написать что-то более разумное, чем переливку данных из одного источника в другой, нам придется написать на C# code activity и подключать его в процесс обработки.
У нас есть входные и выходные таблицы, свойства, а какую логику с помощью этого реализовать — это на усмотрение разработчика.
После того, как мы написали код, мы должны его опубликовать в blob в виде zip-архива.
В принципе, мы можем создавать и linked resource и pipeline из C#, а не только из powershell через json. Все объекты в JSON один в один мапятся в C# классы. Кому интересно можно прочесть в статье [7]
С ADF можно и нужно работать через PowerShell-коммандлеты [8], полное их описание можно прочитать тут.
Мы можем написать скрипт на hive или pig и встроить его в pipeline обработки. Более подробно можно прочитать в этой [9] и этой [10] статье.
По большому счету ничего особенно отличающегося от остальных вариантов. Просто в качестве актвности указывается hive скрипт, грузится в blob и затем на него ссылается в декларации pipeline.
Я правда везде вижу Hive/Pig, но про Pig почему-то только заявления, что можно, ни статьи нет на эту тему.
В интерфейсе портала можно посмотреть информацию по всем источникам данных, запускам, их состоянию, по slice-ам, образовавшимся в результате работы.
Как заявляют авторы, мы можем использовать стоящий в нашем datacenter sql server.
Для этого нам надо поставить Data Management Gateway (это ПО, которое ставится на ваш сервер и обеспечивает связь azure с ним), а затем так же, как и раньше, зарегистрировать наш sql как linked service.
Более подробно рекомендую прочитать статью [2]. Ни каких рокетных технологий тут нет.
Более подробно [11]
Как и любой проект по переливке данных (SQL Integration Service и т.п.) с логированием все могло бы быть лучше.
На мой субъективный взгляд, было бы полезно встроиться в шаг процесса и понять что там происходит и залогировать это, а то что есть сейчас немного не достаточно. Хотя это еще preview, а не релиз.
Есть 2 возможности запуска, т.к. есть 2 тарификации: в облаке и локально.
Под локально понимается не возможность развернуть ADF под столом, а использование локального sql.
Тут как всегда: запуск активности — это одни деньги. Если используете HD Insight(Hadoop), то за него отдельно, трафик, исходящий из azure — тоже отдельно. Мне лично непонятно, зависит ли время работы активности и стоимость ее запуска, т.к. в информации этого не нашел.
Мое личное мнение, что проекто родился из внутренней разработки внутри одной из команд azure и был представлен публике… Он решал свою специфичную задачу, а потом был выкачен в public. Как по мне так не хватает библиотеки активностей, чтобы не все писать руками (в SSIS есть ведь такая), не будет хватать возможности написать свой провайдер к источнику данных и т.п. В целом над SQL Server Integration Service есть 1 преимущество- можно испольовать не SQL источники и приемники данных, в остальном-же сервис сильно проще, если не сказать примитивнее.
P.S. статья доступна на github [22]
Автор: SychevIgor
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/78170
Ссылки в тексте:
[1] терминологий: http://azure.microsoft.com/en-us/documentation/articles/data-factory-introduction/
[2] Data Management Gateway: http://azure.microsoft.com/en-us/documentation/articles/data-factory-use-onpremises-datasources/
[3] Как это выглядит пошагово: http://azure.microsoft.com/en-us/documentation/articles/data-factory-get-started/
[4] этой же статье: http://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-activity/
[5] .Net code activity: http://azure.microsoft.com/en-us/documentation/articles/data-factory-use-custom-activities/
[6] Хостится: https://www.reg.ru/?rlink=reflink-717
[7] статье: http://azure.microsoft.com/en-us/documentation/articles/data-factory-create-data-factories-programmatically/
[8] коммандлеты: http://msdn.microsoft.com/en-us/library/dn820234.aspx
[9] этой: http://azure.microsoft.com/en-us/documentation/articles/data-factory-map-reduce/
[10] этой: http://azure.microsoft.com/en-us/documentation/articles/data-factory-pig-hive-activities/
[11] подробно : http://azure.microsoft.com/en-us/documentation/articles/data-factory-troubleshoot/
[12] Цены: http://azure.microsoft.com/en-us/pricing/details/data-factory/
[13] Data Factory на страничке preview: http://azure.microsoft.com/en-us/services/preview/
[14] Стартовая: http://azure.microsoft.com/en-us/services/data-factory/
[15] Видео Overview: http://channel9.msdn.com/Blogs/Windows-Azure/Azure-Data-Factory-Overview/
[16] Техническая документация: http://azure.microsoft.com/en-us/documentation/services/data-factory/
[17] Техническая документация2: http://msdn.microsoft.com/en-us/library/dn834987.aspx
[18] Примеры на github: https://github.com/Azure/Azure-DataFactory
[19] .NetSDK документация: http://msdn.microsoft.com/en-us/library/dn883654.aspx
[20] Форум: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=AzureDataFactory
[21] FAQ: http://azure.microsoft.com/en-us/documentation/articles/data-factory-faq/
[22] github: https://github.com/SychevIgor/blog_Azure/tree/master/DataFactory
[23] Источник: http://habrahabr.ru/post/110751/
Нажмите здесь для печати.