Nous parlons de « quasi-un pour un »,
car il y a forcément quelques transty-
pages à effectuer pour passer d'une
base de données à une autre. D’un point de
vue théorique on est face à un ETL (Extract
Transform Load), logiciel bien connu dans le
monde de la Business Intelligence, mais pas
seulement. En pratique, nous utilisons cet outil
en mode ELT (Extract Load Transform) car on
est ici dans le cadre du Cloud et du BigData :
on ne veut pas modifier les données lors de
l’import (« ingestion »), mais les enregistrer
brutes dans un Data Lake. Et si on a à les modi-
fier (« Transform ») et analyser (« Analyse »), ce
sera ultérieurement, et potentiellement dans
quelques années (Fig 1).
Ci-contre les principaux concepts d’Azure Data
Factory (Fig 2).
Dans une instance Data Factory, vous créez un
ou plusieurs pipelines de données. Un pipeli-
ne constitue un groupe d’activités qui définit
les actions à effectuer. Par exemple, vous pou-
vez utiliser une « activité de copie » pour copier
des données d’une banque de données vers
une autre. De même, vous pouvez utiliser une
« activité Hive » qui exécute une requête Hive
sur un cluster Azure HDInsight afin de conver-
tir ou d’analyser vos données. ADF prend en
charge deux types d’activités : déplacement
des données et transformation des don-
nées.
Les dataset sont des jeux de données qui peu-
vent être consommés ou produits par les activités. Enfin chaque exécu-
tion d’une activité produit ce que l’on appelle un data slice.
D'une part, nous allons voir comment nous avons mis en place une extra-
ction de table depuis MySQL (On Premise) vers une base de données
Azure SQL Database (Fig 3). Et d'autre part, nous allons évoquer les dif-
ficultés, qui commencent par de nombreuses incompatibilités entre les
# 206
azure
70
programmez! - avril 2017
Retour d'expérience : MySQL vers
Azure SQL Database, via Azure Data Factory
types de données, ainsi que ce qui concerne la planification des traite-
ments.
Tout d'abord, il faut instancier ADF (Fig 4) et déployer la Gateway sur le
réseau local comme précisé dans la documentation donnée en référence
à la fin.
Ensuite, nous pouvons configurer le déplacement des données en cli-
Azure Data Factory est un service Cloud de traitement de données structurées ou non structurées
provenant de sources de données variées. ADF, son surnom, permet de traiter des données en entrée et
de les déverser dans un stockage en sortie. Généralement en BigData, ce service se limite à effectuer une
copie en « quasi-un pour un » des données.
Nous verrons pourtant que cela n’est pas forcément aussi simple qu’il n’y paraît.
Loris Andaloro,
Expert Data senior
chez VISEO
Ihor Leontiev,
Architecte Azure,
MVP Azure
chez VISEO
Vincent Thavonekham,
Responsable Stratégie Azure,
MVP Azure chez VISEO
1
2
3
azure
# 2 0 6
71
programmez! - avril 2017
quant sur « Copier des données » afin de créer notre premier pipeline.
Une nouvelle page s’ouvre sur une procédure pas à pas de création de
pipeline (Fig 5). Attention, cet outil est encore en version beta, alors que
la solution ADF est en version release. Commencez par nommer le pipe-
line. (Fig 5)
Puis renseigner la source de données MySQL, parmi de nombreuses
autres options comme Amazon Redshift/S3, Azure Blob Storage/SQL
Datawarehouse, Cassandra, MongoDB, (Fig 6, Fig 7)
Et choisir la table source dans l’étape « Source », onglet « EXISTING
TABLES » (Fig 8)
Ensuite, la base de données de destination (liste non exhaustive, Fig 9)
Indiquer enfin la table de destination (Fig 10)
Les premiers soucis se présentent (Fig 11) ; certains types de données
semblent ne pas être supportés, empêchant donc la création du pipeline.
4
5
6
7
8
9
10
# 206
azure
72
programmez! - avril 2017
L'astuce consiste à revenir à l’étape « Source » onglet « USE QUERY »
(Fig 12). Cela permet l'utilisation d'une requête avec des CAST au lieu de
la table (nous verrons que cela n’est pas suffisant non plus lié à un autre
point bloquant).
Voici un exemple de requête à utiliser :
SELECT
CAST(champ1 AS NVARCHAR)AS champ1,
CAST(champ2 AS Signed Integer)AS champ2,
champ3,
IF(champ4>= '1900/01/01',champ4, NULL) AS champ4
FROM table
Avec des CAST convenables sur les champs problématiques, il devient
possible de mapper toutes les colonnes sans erreurs. J’ai recensé les prin-
cipales équivalences entre les types MySQL et SQL Server, ainsi que les
opérations à effectuer au niveau de la requête SELECT.
Types Type SQL
MySQL Server Opération à effectuer
recommandé
bigint bigint
blob varbinary(max)
char(X) nchar(X)
date date IF(xxxx >= '1900/01/01', xxxx, NULL) as xxxx,
datetime datetime IF(xxxx >= '1900/01/01', xxxx, NULL) as xxxx,
decimal decimal
double float
enum nvarchar(max) CAST(xxxx AS VARCHAR)
float float
int int or bigint Dépend du flag UNSIGNED MySQL : CAST
(xxxx AS SIGNED BIGINT) ou
CAST(xxxx AS SIGNED INT)
longblob varbinary(max)
longtext nvarchar(max)
mediumtext nvarchar(max)
set nvarchar(max) CAST(xxxx AS NVARCHAR)
smallint smallint or int Dépend du flag UNSIGNED MySQL : CAST
(xxxx AS SIGNED INT) ou
CAST(xxxx AS SIGNED SMALLINT)
text nvarchar(max)
time time
timestamp smalldatetime
tinyint tinyint Dépend du flag UNSIGNED MySQL : CAST
or smallint (xxxx AS SIGNED SMALLINT)
ou CAST(xxxx AS SIGNED TINYINT)
varchar(X) nvarchar(X)
ADF s’améliorant rapidement, ces gles évoluent également très vite
également. Au fil des mois, nous constatons qu’il devient de plus en plus
simple d’importer les données MySQL ; donc moins de hack de conver-
sions et cela fonctionne sans problèmes (Fig 13).
Nous poursuivons avec l’assistant de configuration jusqu’au déploiement
du pipeline, sans encombre ; cela génère un fichier JSON dans le menu
Créer et déployer. C’est la définition du pipeline que nous venons de
mettre en place.
Aussi, grâce au Cloud Explorer intégré à Visual Studio vous pouvez
récupérer votre pipeline et l’éditer au format JSON. Pour cela il faut navi-
guer dans l’arborescence jusqu’à votre instance ADF puis effectuer un
clic droit et choisir le menu Export to New Data Factory Project (Fig
14).
11
12
13
14
azure
# 2 0 6
73
programmez! - avril 2017
Il n’est en effet pas possible, pour le moment, de revenir à l’assistant Web
« Copy Activity » des écrans précédents pour éditer le pipeline.
Le dernier problème bloquant de cet assistant est que nous avions plu-
sieurs milliers de « schema mappings » à mettre en œuvre. Impossible
donc de passer plusieurs jours à faire des clics dans le navigateur.
D’autant que nos nombreuses tentatives désespérées mettaient systéma-
tiquement le JavaScript du navigateur sur les rotules (quel que soit le
navigateur). Nous avons eu à développer un programme C# ayant la
capacité de détecter les tables source et générer ces fichiers JSON à par-
tir d’une base source.
Autres possibilités de ADF : Orchestration,
planification et monitoring
La planification de l’heure de lancement du traitement se fait avec le
paramètre offset. A ce jour, une astuce peu documentée que Microsoft
Corp nous a suggérée pour choisir l’heure précise, consiste à configurer
le paramètre start avec systématiquement une valeur à minuit (ci-des-
sous 2017-02-21T00:00:00Z). Sinon le pipeline ne fonctionnera pas.
"policy": {
"timeout": "1.00:00:00",
"concurrency": 1,
"executionPriorityOrder": "NewestFirst",
"style": "StartOfInterval",
"retry": 3,
"longRetry": 0,
"longRetryInterval": "00:00:00"
},
"scheduler": {
"frequency": "Hour",
"interval": 24,
"offset": "03:00:00"
},
"name": "Activity-0-_Custom query_->[dbo]_[xxxxxxxxx]"
],
"start": "2017-02-21T00:00:00Z",
"end": "9999-09-09T00:00:00Z",
"isPaused": false,
"pipelineMode": "Scheduled"
La partie Monitoring d’ADF est très importante et correspond à un de ses
gros points forts, et obligatoire pour faire du « Data Lineage » et ainsi
auditer les données et les nombreux traitements quotidiens. Pour y accé-
der, cliquer l’icône « Surveiller et gérer » (Fig 4), et cela ouvre une nou-
velle fenêtre. Autant dire que nous avons passé des journées entières les
yeux rivés sur les différents pipelines qui s’exécutent, avec des Logs
détaillés.
CONCLUSION
La documentation officielle de Microsoft, ainsi de que nombreuses
recherches, ont bien aidé à avancer et nous sommes actuellement en
production avec ADF. Bien que nous ayons réduit le périmètre de ce
retour d’expérience à l’unique brique ADF (afin que cela soit aisément
compréhensible), cette brique qui semble rapide et simple à appréhen-
der peut se révéler bien plus compliquée qu’il n’y paraît.
Dans notre cas, au-delà de ces petites subtilités, j'avoue que sans l'aide
de l'équipe produit de Microsoft Corp qui développe ADF, nous n'au-
rions pas réussi la mise en production ; depuis, cela fonctionne comme
un charme au quotidien !
Références
Introduction ADF :
https://docs.microsoft.com/fr-fr/azure/data-factory/data-factory-introduction
Format JSON d’ADF :
https://docs.microsoft.com/en-us/azure/data-factory/data-factory-introduction
Configurer ADF Gateway sur le réseau local :
https://docs.microsoft.com/fr-fr/azure/data-factory/data-factory-move-data-between-onprem-
and-cloud
Nous avons vu dans cet article un aperçu de l’utilisation d’ADF. Il est légitime de se demander pourquoi faire autant d’efforts ?
alors qu’un ETL comme SSIS est déjà présent sur le marché depuis des années.
POUR ALLER PLUS LOIN
Au-delà du fait que SSIS ne soit pas « scalable »,
ADF va permettre d’adresser des scénarii Big Data
inaccessibles jusqu’à présent.
Dans le scma, un élément frappant est dune
part la partition des zones de stockage, cela
diffère des traditionnels BI avec un “Staging area”,
un “Operational Data Store” et un “Datawarehouse”
remplies et vidées quotidiennement. D’autre part,
ADF gère une grande variété des sources de don-
nées : les bases de données métier de l’entreprise,
le CRM, l’ERP, mais aussi les réseaux sociaux, les
services Open Data, l’Internet des objets (IoT),
etcEnfin ADF travaille sur une fréquence des
traitements et une puissance de calculs bien supérieur: les données
sont importées, puis transformés plusieurs fois ; tantôt en (near-)temps
el (ex IoT), tant en batch (ex. calcul d’indicateurs currents
chaque soir, ou analyse de sentiments Twitter/Facebook durant le lan-
cement d’un produit).
Afin de répondre aux enjeux actuels de la Data et d’analyses orien-
tées données, Microsoft investit de manière importante dans tous les
outils Data, et en particulier sur cet outil, véritable chef d’orchestre de
la Data au sein du système d’informationmatérialisé de l’ « entre-
prise 2.0 » et de l’« Industrie 4.0 » !
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !