Dos de las librerías más utilizadas en el mundo de Python para el procesamiento de datos son Pandas y Pyspark (papelería de Python para spark) con características muy similares entre ellas incluyendo los nombres de algunos métodos o funciones. Generalmente la forma más global para tratar datos provenientes de archivos Excel, CSV, Parquet o Json es mediante los DataFrames. Partiremos desde este punto a describir por separado los Dataframes de pandas y los Dataframes de Python.
DataFrames en Pandas
Para concretar un dataframe en pandas se debe tener en cuenta que la papelería Pandas está construida con el paquete Numpy que es una papelería de python para la manipulación de matrices y vectores n-dimensionales. Entonces un Dataframe en pandas es la estructura de datos esencia que va a permitir la manipulación de datos tabulados en filas y columnas.
En temas de rendimiento la máxima cantidad de registros que soportan pandas es de cerca de de 2 millones. Si tienes un archivo con numero de registros anciano a esta cantidad una buena opción sería trabajarlo con Spark.
En la manipulación de los datos tal como transformaciones con funciones personalizadas; Es muy sencillo, ya que cada columna se puede trabajar por separada seleccionándola directamente y aplicando métodos de Numpy predefinidos o simplemente convirtiéndola a una nómina para procesarla y nuevamente integrarla como una columna nueva al Dataframe, lo cual facilita mucho la parte de las transformaciones. Una característica muy importante es que se puede lograr a una fila específica mediante su posición con el comando “iloc” que indexa automáticamente el Dataframe.
Marcos de datos en Pyspark
Spark es una tecnología basada en la computación distribuida la cual proporciona una interfaz para la programación entera de Clusters (núcleos de computación) con el paralelismo de datos implícito y tolerante a fallos. Generalmente esta más enfocado en los datos que se almacenan de modo columnar ya que esto hace más eficaz el procesamiento en paralelo.
El mundo de operación de Spark es muy diferente al de Pandas ya que en Spark ingresa en solaz una serie de actores necesarios para completar una petición del afortunado. A continuación, describiremos los más básicos.
- Trabajo: es una cámara de código que lee alguna entrada desde afortunado.
- Etapa: los Jobs son divididos en etapas (Stages) y estas son divididas basadas en los límites computacionales.
- Tareas: cada etapa tiene algunas tareas (Tasks), una tarea por partición. Una tarea es ejecutada sobre una partición sobre un ejecutor (Executor).
- Ejecutor: un Ejecutor es el proceso responsable de ejecutar una tarea.
- Experto: es la maquina sobre la cual corre el software líder (Driver Program).
- Siervo: es la maquina sobre la cual correo el software de ejecución (Executor Program).
La próximo imagen resume todo el entorno de operación de Spark
Interiormente de Spark se encuentran los RDD (Resilient Distributed Dataset) que es básicamente una colección distribuida inmutable de conjuntos de objetos. Un Dataframe en Pyspark está construido en cojín a los RDD y diferencia de los Dataframes de pandas, estos se encuentran organizados en columnas permitiendo consultas más rápidas sobre conjunto determinado de datos aprovechando la computación en paralelo. Está diseñado para trabajar con grandes volúmenes de datos muy por encima de los 2 millones de registros.
La manipulación de los datos puede ser un poco más complicada que con Pandas, partiendo del hecho de que un Dataframe de Spark está basado en los RDD lo que quiere aseverar que no se pueden aplicar las funciones personalizadas directamente al Dataframe como se hace en pandas. Para obtener el mejor rendimiento se debe cambiar un poco la forma de lograr y ejecutar la posición de datos que Spark está basada en un formato columnar.
Por ejemplo: lograr a una fila específica en Spark requiere que tengas una columna con un número incremental que funcione como finalidad de índice. Siquiera se puede pegar una nómina directamente al Dataframe como una nueva columna como se hace en pandas.
Estas son algunas de las diferencias básicas entre un dataframe de Pandas y un dataframe de spark. Generalmente cuando se trabaja con computación paralela como los clusters de databricks, es mejor trabajar con pysark obviamente los archivos a trabajar de grandes volúmenes para hacer un buen provecho de los medios. Pero si los archivos son pequeños es preferible trabajar con pandas y utilizar toda su versatilidad.