Cada año, se incrementa la diferencia entre el tiempo de acceso a memoria y la velocidad de los procesadores. Esto está provocando que se formen cuellos de botella en en el uso de memoria, desaprovechando en muchas ocasiones la capacidad de los procesadores. En el análisis de datos, concretamente en el análisis numérico, es usual que ocurra éste desaprovechamiento, sobre todo si se trabaja con datos estructurados en columnas, lo cual es muy habitual en este tipo de análisis. Es el caso de Python Pandas por ejemplo.
Bcolz aparece con la idea de utilizar la máxima capacidad posible del procesador, sin tener que depender de la memoria. Para ello bcolz establece un formato de archivos en el cual los datos se guardan en disco comprimidos, estructurados por columnas y en trozos del tamaño de la caché del procesador. Cuando se realiza una operación sobre archivos bcolz, la información es transportada de disco diréctamente a procesador. El procesador descomprime la información en su caché y opera con ella.
Al eliminar la barrera de la memoria, conseguimos utilizar el máximo rendimiento del procesador/procesadores y además podremos hacer análisis que antes eran imposible de realizar sin una estrategia multinodo ya que la memoria es algo muy caro/limitado de conseguir en servidores pero el disco no. Además la compresión está hecha con Blosc, que es un compresor muy rápido, que entre otras cosas ha conseguido tiempos excepcionales en el tiempo de transmisión a la caché, incluso más rápido que un memcpy() Bcolz está obteniendo mejores tiempos de consulta en disco que Pandas en memoria. Tabién puede ser usado en memoria aumentando aún más su velocidad, ya que los datos se almacenan en memoria igualmente comprimidos, aunque no es la idea de su diseño.
En la charla se examinarán las posibilidades de Bcolz y la revolución que supone en el análisis de datos numérico, especialmente para quien trabaje con Pandas. Se mostrará que para muchos casos en los cuales por considerarse “Big Data” se opta por una estrategia multinodo del tipo Hadoop, y podría ser mucho más fácil, rápido y menos costoso usando Bcolz. También se verá su aplicación a casos reales en producción y se hablarán de sus ventajas así como de sus limitaciones. Se proporcionará una breve demostración en directo de sus capacidades.
Ingeniero Informático por la Universidad de Granada.
Trabaja como ingeniero Python en Ravenpack (Marbella) y es profesor en el programa ejecutivo de Big Data de la Escuela de Organización Industrial (EOI).
Diego es un apasionado del análisis de datos.
Twitter @jdiegoh
LinkedIn https://www.linkedin.com/in/j-diego-hueltes-vega-485ab553