mardi 14 mai 2013

Calcul distribué avec Spark

Spark est un outil de calcul distribué, permettant de lancer de gros calcul sur un cluster.

D'après ses développeurs, Spark est jusqu'à 100 fois plus rapide qu'Hadoop pour effectuer le même genre de taches.
Spark repose sur HDFS (Hadoop Distributed File System) mais les calculs se font en mémoire pour accélérer les traitements. Le but de cette accélération est de pouvoir effectuer des requêtes en temps réel sur de très gros volumes de données, par exemple sur les logs d'accès d'un site Internet. L'analyse des données en temps réel, le rêve quand on fait de la BI!

D'autres applications sont possibles comme le machine learning ou le data mining. Mais commençons par mettre les mains dans le cambouis!
Le coeur de Spark est écrit en Scala mais des API Java et Python sont également proposées pour interagir avec le framework. Un shell est fourni par défaut, il permet de manipuler facilement l'API Scala de Spark. Très pratique pour faire des tests!

Pour découvrir Spark, commençons par lire un fichier en local :
val textFile = sc.textFile("README.md")
Note : sc est un objet disponible par défaut dans le shell, il correspond au contexte Spark courant.

lundi 18 mars 2013

Comparaison d'Anorm et Slick pour l'accès aux bases de données relationnelles en Scala

Anorm et Slick sont 2 librairies Scala qui permettent d'intéragir avec des bases de données relationnelles.
La première fait partie du framework Play (mais peut être utilisée séparément  et propose d'écrire les requêtes en utilisant directement le langage SQL, la deuxième est l'outil officiel de la stack TypeSafe (la société derrière le langage Scala) et propose un DSL (Domain Specific Langage) plus fortement typé, pour générer du SQL.

Nous allons comparer ces 2 outils et voir comment implémenter les cas d'utilisation classiques à travers l' exemple de l'application Computer Database.

mercredi 6 février 2013

Un plugin Slick pour Play 2.1

Un plugin Slick pour Play 2.1 a été initié par Typesafe, il permet d'utiliser Slick (un librairie d'accès aux bases de données relationnelles en Scala) facilement au sein de Play, avec en prime la génération automatique du schéma (évolutions). Le but ultime est que son code soit intégré à Play 2.2 pour que Slick soit utilisable par défaut. C'est encore au stade Beta mais vous pouvez déjà jouer avec en le récupérant ici : https://github.com/freekh/play-slick.

Si ça vous intéresse n'hésitez pas à contribuer, l'auteur Fredrik Ekholdt est très abordable, il vient d'ailleurs d'intégrer au plugin ma modeste contribution permettant d'abstraire le driver jdbc utilisé (et donc de switcher facilement d'une base à une autre), donc merci Fredrik :)

mardi 20 novembre 2012

Push database -> browser avec Mongo et Play

Aujourd'hui je vous propose une expérience amusante à réaliser avec Play Framework 2.1 et la base de données NoSQL MongoDB.
Vous avez peut être entendu parler de ReactiveMongo, un driver Scala "asynchrone et réactif" pour Mongo. Il existe un plugin Play pour utiliser ce driver plus facilement au sein d'une webapp. Nous allons voir comment utiliser ces technologies pour récupérer un ensemble de messages de manière asynchrone et pour les pousser vers le navigateur en temps réel, dans une application de type "Twitter lite". Le but de notre prototype : en laissant une page de recherche ouverte, on veut voir les nouveaux messages correspondant à cette recherche s'afficher dès leur enregistrement en base de données, sans effectuer de "pull" vers le serveur.

jeudi 11 octobre 2012

Play.Rules!►Return : un nouveau chapitre d'introduction à Scala

Dans ce chapitre nous allons voir l’intérêt d'utiliser Scala à travers quelques exemples, les différences avec la version Java et surtout "pourquoi Scala colle à l'esprit de Play".
Ceci peut donc être vu comme un chapitre bonus, sans lien avec le tuto "Bookmarks", pour vous donner envie de découvrir Scala.

Lire le chapitre : https://github.com/3monkeys/play.rules/blob/master/livre.play.deux/12-scala.md

samedi 15 septembre 2012

Play2 : Les Iteratees expliqués aux humains... francophones!

Dans le post précédent nous avons vu comment envoyer des données de manière asynchrone vers le browser avec Play 2. Pour cela nous avons utilisé quelques fonctionnalités de l'API Iteratee offerte par Play Framework.

Afin de pouvoir expliquer plus en profondeur les concepts derrière cette API, je viens de faire la traduction en français d'un très bon article en anglais écrit par un développeur travaillant chez Zenexity, la société éditrice de Play.

Pour lire cet article intitulé "Play2 : Les Iteratees expliqués aux humains... francophones!",  ça se passe ici : http://gist.github.com/3727850#file_iteratees_humains.md

L'article original se trouve ici : http://mandubian.com/2012/08/27/understanding-play2-iteratees-for-normal-humans

dimanche 5 août 2012

Experiment : Play2 + Scala + Iteratee + Comet = Realtime Web

Just a little experiment I've done with Play2, Scala and Iteratee to mixup some Twitter searches : see the POC and the explanations on Github here!