August 11, 2020

Spark windows functions (I)

En analítica, es muy común hacer uso de las funciones de ventana para distintos cálculos. Hace poco me encontré con un pequeño problema cuya solución mejoró muchísimo al usar las funciones de ventana, demos un poco de contexto. Tenemos una dimensión de usuarios donde los usuarios se van registrando con una fecha y tenemos una tabla de ventas donde tenemos las ventas globales para cada día Y lo que queremos dar es una visión de cómo cada día evoluciona el programa, para ello se quiere que cada día estén tanto las ventas acumuladas como los registros acumulados. Read more

May 30, 2020

Acceso al keyvault mediante certificados

En el proceso de migración de una aplicación de webjob a azure batch, nos encontramos con la problemática de gestionar los secretos. El servicio de batch se encarga de recoger una aplicación de un storage y hacer ejecuciones de ellas (tasks) en unas máquinas concretas (pool). Para poder gestionar los secretos de la aplicación, estos estaban guardados en keyvault. Y teníamos que acceder de forma segura a ello. Por eso optamos por utilizar la autenticación via certificado. La idea de este tutorial es reproducir los mismos pasos que he usado yo para poder usar este certificado. Read more

April 27, 2020

Scala best practices notes

He aprovechado estos días de cuarentena para revisar algunos de los “huecos” de conocimiento que tenía en Scala. Una de las charlas que he podido ver es esta: Scala best practices I wish someone’d told me about - Nicolas Rinaudo Por supuesto siempre recomiendo ver la charla, pero he querido condensar (aún más) ese conocimiento en este post, insisto, es amena y muy interesante, muchos de los puntos que se definen en la charla no se han explicado porque la mayoría se resuelven en dotty y aunque Read more

April 6, 2020

Notas sobre programación funcional en Scala I

Hace unos días pude comprarme el libro de Paul Chiusano y Rúnar Bjarnason: Functional Programming in scala y no puedo estar más contento con él. Como ya es costumbre, aprovecho para dejar mis notas sobre el libro en el blog. No se trata de un resumen del mismo sino curiosidades que sé que volveré a consultar en un futuro. Intentaré que no queden post excesivamente largos haciendo un por capítulo. Igualmente, recomiendo a todo el mundo adquirir “el libro rojo de Scala” y echarle un vistazo. Read more

February 24, 2020

Límites en azure functions para procesos de larga duración

Estas últimas semanas he tenido que implementar ciertas mejoras en un proyecto. El objetivo era muy simple, conectar el proyecto a una aplicación de datawarehousing existente, y de forma externa, realizar agregados y luego aplicar cierto procesamiento para un servicio en particular. Además había una serie de requisitos extras: El procesamiento iba a ser reutilizado por otro proyecto. Y requería comprimir y cifrar archivos grandes. La primera parte tenía que simplemente, Había una deadline muy cercana para este proyecto. Con todas estas limitaciones, la solución propuesta fue esta: Read more

November 9, 2019

Conceptos básicos de Spark

Nota del autor: Todos los contenidos de este artículo son extractos del libro “The Data Engineer’s Guide to Apache Spark” que puedes descargar desde la pagina de databricks: https://databricks.com/lp/ebook/data-engineer-spark-guide Preludio: Cluster: Un cluster no es más que un conjunto de máquinas trabajando de forma coordinada. Un cluster de Spark se compone de nodos. Uno actúa como DRIVER y es el punto de entrada para el código del usuario. Los otros actúan como EXECUTOR que seran los encargados de realizar las operaciones. Read more

November 9, 2019

Empezando en Spark con Docker

A pesar de haber leído guías tan buenas como: https://medium.com/@bogdan.cojocar/how-to-run-scala-and-spark-in-the-jupyter-notebook-328a80090b3b https://medium.com/@singhpraveen2010/install-apache-spark-and-configure-with-jupyter-notebook-in-10-minutes-ae120ebca597 Se me ha hecho cuesta arriba el poder conectar un notebook de jupyter y utilizar Scala. Entre configurar el apache toree para poder usar scala en los notebooks y algún error luego en spark al usarlo desde IntelliJ, me he acabado rindiendo. Nota del autor: Como disclaimer esto ocurre probablemente porque estoy en Manjaro y mi version de Scala es incompatible. Esta clase de problemas en su día las solucionaba fijando una versión, sin embargo, creo que teniendo una herramienta tan potente como es Docker estoy reinventando la rueda par un problema ya resuelto. Además de que voy a probarlo también en un windows para ver que es una solución agnóstical SO. Read more

September 26, 2019

Correlated subqueries

Llevo un par de meses viendo como la mayoría de esfuerzos en el proyecto en el que estoy se centran en evitar los joins en las distintas capas de análisis. Aprovechando las capacidades de spark se busca tener las estructuras muy desnormalizadas y se había “endemoniado” al join considerarlo perjudicial. Tanto es así que llevo un par de días peleando con una pieza de código que me ha sorprendido. Partiendo de una tabla de hechos que agrupa datos para un periodo a hasta b, se quiere que se “colapsen” los datos de hace 14 días. Será mejor con un ejemplo: Read more

2017-2024 Adrián Abreu powered by Hugo and Kiss Theme