Quelles technologies pour vos projets data ?

Image de couverture du post

Quelles technologies pour vos projets data ?

Share on twitter
Share on linkedin
Share on pinterest
Share on reddit
Share on pocket
Share on email

Vous pouvez facilement vous retrouver perdu(e) dans l’écosystème des technos data. L’offre technologique en data management étant très (trop ?!) riche, de nombreuses solutions s’offrent à vous en fonction de vos besoins, sources de données, industries, infrastructures, compétences, situation technologique…C’est pourquoi, nous vous présentons une review et des conseils pour choisir vos outils d’analyse.

Data engineers ou data scientists ?

Les data engineers doivent utiliser des technos concernant l’infrastructure et l’écosystème global, ils doivent avoir des connaissances approfondies concernant les bases de données SQL, ils doivent être capables de configurer les clusters de Spark… Ils utilisent notamment Linux et Git pour le développement, Hadoop et Spark au niveau de l’environnement Big Data, éventuellement Map Reduce en tant que modèle de calcul ainsi que HDFS, MongoDB et Cassandra pour le NoSQL.

En ce qui concerne les data scientists, il s’agira plutôt d’outils plus focalisés sur le développement d’applications de machine learning, avec Python, R, Jupiter, TensorFlow, Pandas, etc. Évidemment la frontière n’est pas totalement nette entre les deux profils et il peut donc être difficile de savoir ce qui différencie le Data Engineer du Data Scientist.

Les langages de programmation

Concernant les langages de programmation, c’est toujours R et Python les plus utilisés. Ces langages ne sont pas récents. La « guerre » entre R et Python est loin d’être finie, tous les deux ont des points positifs.

Historiquement, R est plus proche de la communauté des statisticiens alors que Python a été plus utilisé chez les informaticiens. Pour cause, on considère R comme étant plus spécialisé à l’analyse statistique, quand Python se veut plus généraliste, ce qui le rend plus populaire que son homologue.

R a une courbe d’apprentissage plus importante et moins de possibilités d’intégration avec des applications web et bases de données, mais est plus efficace dans le pré-traitement de données. Concrètement, R va être plus adapté à l’analyse et à l’exploration de datasets. En revanche, Python sera plus performant pour leur manipulation.

Concernant Python, vous retrouvez presque l’opposé de R, à savoir une syntaxe plus moderne qui vous permet de développer plus rapidement des applications, mais un écosystème un peu moins riche. Par exemple, la librairie Pandas est très puissante pour traiter et convertir des fichiers CSV, JSON, TSV ou une base de données SQS vers un objet Python facilement analysable.

D’autres langages sont également utilisés : Scala, Perl, C#, Java…

L'analyse

Malgré son recul important, Hadoop reste encore un standard quand il s’agit d’analyse.

Massivement utilisé, il est aujourd’hui pratiquement synonyme de Big Data grâce à son architecture MapReduce. Et avec Hive s’ajoute la possibilité de faire des requêtes de type SQL.

En perte de vitesse, Hadoop reste tout de même recommandé quand une grande masse de données doit être analysée sans contrainte de temps; Si vous êtes face à un projet où l’analyse en temps réel est essentielle, optez plutôt pour Spark ou Storm.

L'environnement de développement

Un outil essentiel pour tout data scientist est Jupyter. Cette application web gratuite vous permet de développer des « notebooks » dans lesquels écrire vos codes sans avoir à installer beaucoup de libraires en mode local. Il est très facile de partager et de collaborer sur un même projet, ainsi que créer des résultats sous forme de graphiques. Vous pourrez intégrer facilement d’autres outils comme Spark, Pandas et Tensorflow.

Les librairies

TensorFlow est l’une des librairies les plus importantes actuellement dans les environnements scientifiques autour de la data. Elle a été développée par Google en 2015 et est spécialisée dans l’apprentissage automatique et le deep learning. Le modèle de calcul basé sur un flux de données en forme de réseau, dans lequel les nœuds correspondent aux opérations mathématiques et les liens (tensors) sont des matrices contenant des données multidimensionnelles.

D’autres librairies intéressantes sont NLTK et Keras. NLTK est une librairie standard de Python pour le traitement du langage avec beaucoup d’opérations utiles. Elle est capable d’analyser et de catégoriser des phrases, d’analyser le sentiment, de reconnaître des entités, etc.

Quant à Keras, elle peut être vue comme une surcouche pour le deep learning, capable d’interagir avec TensorFlow et d’autres librairies de deep learning. Il est très facile de créer des prototypes d’applications car sa syntaxe est très facile.

Enfin, Apache Spark est l’outil incontournable pour le traitement de données dans un contexte Big Data. L’exécution de tâches est très rapide, efficace. Il permet également d’explorer une grande quantité de données en un temps record. Le langage natif est Scala mais vous pourrez développer également en Java, Python et R.

Intégration continue et coopération

Un aspect important dans tout projet data est la coopération et l’intégration continue. Vous ne pourrez pas passer à côté des outils comme Jenkins pour planifier des tâches, Docker pour la création de containers et le déploiement d’applications, Kubernetes pour déployer des applications dans le cloud et gérer les containers, et des vieux connus comme Maven et Git pour la gestion de dépendances du code et la gestion de versions.

L’écosystème data est complexe et très riche. De ce fait, afin de répondre aux divers besoins, la tendance actuelle est à la l’unification pour faciliter le développement et l’intégration des différents profils. Un effort notable est fait sur l’orchestration de l’ensemble des étapes du projet, de la collecte de données à la production, au sein d’un même outil.

C’est pour exemple, tout l’enjeu de La Plateforme DataOps de Saagie – qui présente une méta technologie rassemblant la plupart des technos au sein de la même interface  – simplifiant ainsi le processus de développement des projets data en le rendant beaucoup plus intuitif.