arquitectura kappa y prácticamente todos los proyectos en los que he estado implicado, se han desarrollado usando esta arquitectura. [caption id="attachment_2887" align="alignleft" width="150"] Apache Beam[/caption] Desde hace un tiempo he empezado a estudiar y usar Apache Beam. El punto de inflexión ha sido las charlas que vi durante la apachecon big data europe que se celebró en Sevilla y en la que di una charla sobre arquitectura kappa. La conversación que tuve con Sergio Fernandez (@wikier) fue decisiva. Cuando un crack como Sergio te cuenta como está trabajando con Apache Beam y por es una tecnología es killer es muy difícil no investigar más 😉 En resumen, Apache Beam es un framework para crear arquitecturas que trabajen con datos muy al estilo de la arquitectura kappa. Si hubiera que definir una sola característica por la que es interesante sería la capacidad de abstracción en la definición de la arquitectura con un DAG que se puede ejecutar contra distintos frameworks: Apache Spark, Storm, Flink, Google Dataflow o con un Local Runner en tu máquina. Ahora mismo está en el incubator de la fundación apache y debe estar a punto de ser aprobado para que se convierta en un proyecto oficial. Ya hay empresas usándolo en producción y las pruebas que he hecho no me han dado ningún problema. También hay una mala y una buena noticia. La mala es que apache beam esta escrito en java y se programa en java. No soy un fan de java y menos de como resuelven las API/SDKs. La buena noticia es que la gente de spotify que usa a tope Apache Beam se ha programado un binding para scala. Además son unos cracks y se nota en lo bien que han resuelto el binding. Han conseguido DSL funcional, bello y casi un clon de spark/cascading. Vamos que no pienso usar java y si scala con el proyecto Scio que es como se llama el proyecto de spotify. Que por cierto tiene licencia apache y está en proceso de merging con Apache Beam. No son los únicos dos proyectos que incluyo para el 2017, ya os contaré más en otros posts 😉 ]]>
diciembre 8, 2016
noviembre 5, 2016
Nuevo curso online de Scala
curso de scala que está muy bien. Si quieres empezar con scala o quieres reforzar algunos temas es muy recomendable. ]]>
septiembre 22, 2015
En ASPGems hemos preparado un curso de Apache Spark con NeuroK
NeuroK y la Neurodidactica NeuroK: una nueva manera de aprender. Aquí está la información del curso Descubre Apache Spark]]>
agosto 11, 2015
Me ha entrevistado Soraya Paniagua
Mi último post es una entrevista a @juantomas : Spark es una de las tecnologías más bellas de los últimos 30 años Ⓢ http://t.co/ihxQpjRgSc
— Soraya Paniagua (@sorayapa) August 11, 2015 ]]>abril 8, 2015
Hoy toca la V edición del MeetUp de Machine Learning
José Manuel Navarro Gonzalez, es Ingeniero de Telecomunicació
marzo 14, 2015
Scalatra para impacientes: Como montar un proxy de Elastic Search en 3 minutos
mini tutorial de como instalar scala estilo shotgun. * Si ya tienes instalado Scalatra todavía lo haremos en menos tiempo. Si no este manual de como instalar Scalatra para impacientes te ayudará a hacerlo en un par de minutos. Y ahora llega la mejor parte, tenemos dos opciones: a) hacerlo de cero. Buscar toda la documentación de Scalatra, Interface REST de Elastic Search, etc, etc. b) Clonar este proyecto de github, configurarlo y aprender como con unas cuantas lineas de Scalatra montamos un proxy de Elastic Search y los configuramos a nuestra medida y necesidades. Por supuesto vamos a escoger la opción B que nos mete en el partido en 3 minutos. 1) clonar el proyecto de ejemplo de proxy para Elastic Search usando Scalatra:
git clone https://github.com/nfb-onf/nfbsearch-scalatra.git2) Configurar el URI de conexión a tu Servidor de elastic Search (linea 35)
$ cd NFBSearch-Scalatra
$ vi src/main/scala/ca/nfb/NFBSearchServlet.scala
3) hacer un build del proyecto y lanzarlo.
$ ./sbt
> container:start
> browse
Lo que más me gusta de usar Scalatra es lo sencillo que es implementar una acción:
get("/search") { contentType = formats("json") val q:String = params("q") val httpClient = new HttpClient val response: Response = httpClient.get(new URL("http://localhost:9200/nfb_films/films/_search?q=" + q)) response.body.asString }Incluso alguien con poca experiencia con Scala/Scalatra sería capaz de leer y modificar este código. Es puro código suscinto sin ningún tipo de ceremonia, lo explica muy bien Javier Lafora, nuestro CTO en ASPGems en su post sobre por que usamos ruby y rails en ASPGems como tecnología web y tiene muchos puntos en común con «Por que usamos Scala para hacer Big Data en ASPGems» (este todavía no está escrito!!! 😉 )
«Scala is Love»
Agradecer a los usuarios de la cuenta de github «nfb-onf» que me ha ahorrado un par de horas del plan A con su maravillosa y gratuita contribución a la comunidad. Muchas Gracias!!! os debo unas cervezas!! ]]>marzo 2, 2015
Scalatra para impacientes: como crear tu primer proyecto
requisitos previos para poder usar scalatra. Ahora vamos a crear un primer proyecto. Usaremos giter8 para crear la estructura inicial del proyecto. Vamos a utilizar SBT pero también se podría hacer con maven y le guste usar esta herramienta de compilación. Para ello vamos a ejecutar:
g8 scalatra/scalatra-sbt
nos hará las siguientes preguntas:
$ g8 scalatra/scalatra-sbt
organization [com.example]:
package [com.example.app]:
name [My Scalatra Web App]:
servlet_name [MyScalatraServlet]:
scala_version [2.9.2]:
version [0.1.0-SNAPSHOT]:
Donde:
organization: nombre del dominio del que publica al reves, si no tienes la gente acostumbra a usar: com.github.username
package: A Paquete al que se asigna todo el código que se va a generar. La Scala Style Guide recomienda que tu organización tenga todo su código bajo mismo namespace.
name: El nombre de tu proyecto. giter8 creará un directorio con este nombre y dentro estará toda la estructura.
servlet_name: El nombre de la clase Servlet podría ser BlogServlet
o Blog
.
scala_version: Que versión de Scala vas a utilizar.
version: La versión de tu proyecto.
Ahora es el momento de construir tu primer proyecto:
$ cd
$ chmod u+x sbt
$ ./sbt
sbt se encargará de bajarse todo lo que necesite tu máquina para que funcione scalatra y sus dependencias. La primera vez es posible que tarde unos minutos.
Una vez generado el proyecto y para probar que funciona:
$ ./sbt
> container:start
Ahora puedes probarlo en este enlace http://localhost:8080
Los tutoriales de Scalatra son muy buenos. Te recomiendo que les des un vistazo. Tienen ejemplos de cada caso de uso: como subir ficheros, JSON, Akka, etc.
El siguiente post de esta serie será montar un proxy de Elastic Search usando Scalatra.
Bonus de Post:
Si inicializas un proyecto de Scalatra con estas opciones en una ventana aparte:
$ ./sbt
> container:start
> ~ ;copy-resources;aux-compile
Cada vez que modifiques el código, se compilará automáticamente y recargará la nueva versión si accedes a la url 😉
]]>
febrero 28, 2015
Scalatra para impacientes: Como instalarlo
Scala y con Apache Spark pero sigo teniendo la necesidad de resolver la misma clase de problemas que no necesitan un framework como Play (el Ruby on . La mejor solución desde mi punto de vista es Scalatra. Scalatra es un clon de sinatra escrito en Scala con todas las ventajas del lenguaje (OO, Funcional, reactivo, actores, etc). Como instalamos scalatra: Requisitos: * Necesitas tener el JDK Si haces esto puedes comprobar si ya lo tienes instalado y que versión tienes.
$ java -version
java version "1.7.0_10"
OpenJDK Runtime Environment (IcedTea6 1.11.1) build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b094, mixed mode)
$ javac -version
javac 1.7.0_10
curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | shEsto te creará un directorio bin en tu directorio home: ~/bin En este directorio instalará el programa, para incluirlo en tu PATH de ejecución añade al .bash_profile o .bashrc estas dos lineas:
PATH=$PATH:~/bin export PATHy luego ejecuta esto para que te actualice tu entorno.
source ~/.bash_profile # (Mac) source ~/.bashrc # (Linux)Ahora vamos a usar conscript para instalar giter8. Conscript se encargará de bajarse además todas las dependencias que necesita giter8.
cs n8han/giter8Con esto ya tienes lo que necesitas para generar tu primer proyecto con Scalatra. Vía: página oficial de escalatra. ]]>
febrero 26, 2015
Scala para Impacientes: Como instalar Scala
Scala. Que se ha haya convertido en el lenguaje estrella de la vanguardia de Big Data va a ser la clave del éxito en proyectos como Apache Spark. Pero vamos a ver Scala implicado en todos los proyectos importantes (Kafka, Akka, etc 😉 Esta seríe de posts va a ser estilo shotgun. Esto es una especie de disclaimer: voy a contar como hacer las cosas y a añadir algunos enlaces por si necesitas más ayuda. Vamos al lio en unos cuantos pasos: a) Bájate la última versión oficial de Scala. Esta es la página oficial de descargas de Scala. Tienes varias opciones bajarte el tgz o usar la herramienta typesafe activator que es un IDE para gestionar esto y algunas cosas más. Yo me siempre me bajo el tgz. El tgz una vez que lo descomprimes con tar xvfz te dejará un directorio con todo lo que necesitas de scala. Muévelo donde más te guste según tus preferencias. Además en la página de downloads están los IDEs basado en eclipse, netbeans, etc. Yo sigo siendo de VIM, lo llevo usando 30 años seguidos (no he sido capaz de salir ;-P) b) Mete en tu .profile o .bashrc o lo que use los PATHS Las variables que necesitas son: SCALA_HOME=/usr/local/share/scala # Si has movido el directorio de scala a este directorio PATH=$PATH:$SCALA_HOME/bin Ya está!!! Hay más opciones para instalar scala si usas Linux o Mac OSX como instalar por paquetes, pero yo prefiero hacerlo desde el sitio original y con la última versión 😉 Siguientes pasos: Sigue la guía oficial de primeros pasos con scala 😉 Mi recomendación: scala tiene shell/consola, pruebala te resultará imprescindible. ]]>
febrero 25, 2015
Hacer proyectos con Spark y Scala tiene premio
proyecto Apache Spark. Mucho de lo que allí contaron no era más que la primera información de un Spark que se había «graduado» en noviembre del 2013. También recuerdo perfectamente el comentario final del ponente: «Spark va a ser la bomba» Aquella frase se me quedó marcada a fuego y confirmaba que no era el único que veía clara la oportunidad y posibilidades de Spark. Ahora un año después AUTELSI ha premiado la innovación del proyecto de Telefónica MSS-Saqqara y una parte importante del funcionamiento y prestaciones del producto se lo debemos a Spark. Para ser justos la combinación Spark y el lenguaje Scala es definitivamente ganadora e innovadora. Todas las virtudes de Scala han sido fundamentales para poder influir y concebir Spark y me voy a permitir una pequeña licencia: «Nunca se hubiera podido crear algo como Spark con Java». La otra parte con la que me siento premiado, realmente premiado, es con el equipo que son los que realmente han conseguido que lo difícil pareciera fácil, los que desde el principio estuvieron dispuestos a salir de su zona de confort para apostar por una tecnología que al final no solo funciona perfectamente si no que además tiene premio. ]]>