Apache Spark es un motor de procesamiento distribuido diseñado para procesar datos estructurados, semiestructurados y sin estructurar a escala. Para interactuar con el motor y definir operaciones de datos distribuidas, los desarrolladores utilizan la API de Spark.
La API DataFrame de Spark es el núcleo del desarrollo moderno de Spark. Un DataFrame organiza y procesa datos distribuidos en columnas con nombre, de forma similar a una tabla de una base de datos relacional o una hoja de cálculo. Proporciona una interfaz declarativa y estructurada para analizar conjuntos de datos masivos y, al mismo tiempo, optimiza automáticamente la ejecución física en segundo plano.
Para entender cómo ejecuta la API de Spark tu código en una red distribuida, es importante que conozcas los componentes básicos de su arquitectura de ejecución:
A la hora de diseñar flujos de procesamiento de datos distribuidos, los desarrolladores eligen entre dos interfaces de programación principales:
La API DataFrame es la opción preferida para casi todos los casos prácticos de ingeniería y ciencia de datos. Los RDDs se reservan para situaciones en las que debes manipular datos sin procesar y no estructurados (como archivos binarios o flujos de contenido multimedia) mediante objetos Java personalizados. Los DataFrames requieren menos código, se ejecutan automáticamente más rápido y utilizan la gestión de memoria binaria fuera del montículo para evitar los cuellos de botella causados por la recolección de elementos no utilizados de la JVM.
La API DataFrame de Spark simplifica las tareas de procesamiento, limpieza y preparación de grandes volúmenes de datos, que requieren un uso intensivo de recursos de computación.
La API DataFrame de Spark sirve como base programática para las bibliotecas de procesamiento avanzado de Spark:
Optimización declarativa
Los DataFrames utilizan un optimizador de consultas integrado: el optimizador de Catalyst. Cuando escribes código de DataFrame, el optimizador reescribe automáticamente el plan de ejecución físico aplicando la inserción de filtros, la poda de proyecciones y la reordenación de uniones para que se ejecute lo más rápido posible sin necesidad de realizar ajustes manuales.
Flexibilidad de lenguajes
Tanto si tu equipo escribe código en Python (PySpark), Scala, Java o R, la API DataFrame garantiza un rendimiento idéntico. El plan de ejecución subyacente se compila y optimiza en la misma capa de ejecución independiente de la JVM.
Gestión eficiente de la memoria
Los DataFrames utilizan el motor de ejecución Tungsten para almacenar datos en un formato binario muy comprimido y fuera del montículo. Esto elimina la sobrecarga de creación de objetos de la JVM y evita que las pausas de recolección de elementos no utilizados congelen los hilos de ejecución.
Tradicionalmente, para ejecutar Spark de código abierto se necesita configurar manualmente los clústeres, gestionar las versiones de software y realizar un complejo emparejamiento de redes. Google Cloud simplifica este proceso ofreciendo Managed Service for Apache Spark, que transforma la ejecución distribuida en una plataforma de datos totalmente gestionada y lista para el ámbito empresarial.
Los equipos de datos ejecutan cargas de trabajo de DataFrame de Spark en Google Cloud con las siguientes funciones:
Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.