Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Spark se ha convertido en el estándar de facto para el análisis de datos a gran escala. Llevo utilizando y enseñando Spark desde su creación hace nueve años, y he visto enormes mejoras en los procesos de extracción, transformación y carga (ETL), en el desarrollo de algoritmos distribuidos y en el análisis de datos a gran escala. Empecé a utilizar Spark con Java, pero descubrí que, aunque el código es bastante estable, tienes que escribir largas líneas de código, que pueden llegar a ser ilegibles. Para este libro, decidí utilizar PySpark (una API de Python para Spark) porque es más fácil expresar la potencia de Spark en Python: el código es corto, legible y fácil de mantener. PySpark es potente pero sencillo de usar, y puedes expresar en él cualquier ETL o algoritmo distribuido con un simple conjunto de transformaciones y acciones.
Por qué escribí este libro
Este es un libro introductorio sobre el análisis de datos utilizando PySpark. El libro consiste en un conjunto de directrices y ejemplos destinados a ayudar a los ingenieros de software y datos a resolver problemas de datos de la forma más sencilla posible. Como sabes, hay muchas formas de resolver cualquier problema de datos: PySpark nos permite escribir código sencillo para problemas complejos. Éste es el lema que he intentado expresar en este libro: hazlo sencillo y utiliza parámetros para que tu solución pueda ser reutilizada por otros desarrolladores. Mi objetivo es enseñar a los lectores a pensar sobre los datos y a comprender sus orígenes y su forma final prevista, así como mostrar cómo utilizar patrones fundamentales de transformación de datos para resolver una gran variedad de problemas de datos.
A quién va dirigido este libro
Para utilizar este libro con eficacia, te será útil conocer los fundamentos del lenguaje de programación Python, como por ejemplo cómo utilizar condicionales (if-then-else
), iterar a través de listas y definir y llamar a funciones. Sin embargo, si tu formación es en otro lenguaje de programación (como Java o Scala) y no conoces Python, podrás utilizar el libro, ya que he proporcionado una introducción razonable a Spark y PySpark.
Este libro está dirigido principalmente a personas que quieran analizar grandes cantidades de datos y desarrollar algoritmos distribuidos utilizando el motor Spark y PySpark. He proporcionado ejemplos sencillos que muestran cómo realizar operaciones ETL y escribir algoritmos distribuidos en PySpark. Los ejemplos de código están escritos de forma que puedas cortarlos y pegarlos para realizar el trabajo fácilmente.
El código de ejemplo proporcionado en GitHub es un gran recurso para empezar con tus propios proyectos de datos.
Cómo está organizado este libro
El libro consta de 12 capítulos, organizados en tres partes:
- Parte I, "Fundamentos"
-
Los cuatro primeros capítulos cubren los fundamentos de Spark y PySpark e introducen transformaciones de datos como mapeadores, filtros y reductores. Contienen muchos ejemplos prácticos para que empieces a trabajar en tus propios proyectos PySpark. Aproximadamente el 95% de todos los problemas de datos pueden abordarse utilizando sencillas transformaciones de datos PySpark (como
map()
,flatMap()
,filter()
, yreduceByKey()
) introducidas en los cuatro primeros capítulos de este libro. He aquí un vistazo más de cerca a lo que encontrarás aquí:-
El Capítulo 1, "Introducción a Spark y PySpark", proporciona una visión general de alto nivel de los algoritmos de datos e introduce el uso de Spark y PySpark para resolver problemas de análisis de datos.
-
El capítulo 2, "Transformaciones en acción", muestra cómo utilizar las transformaciones de Spark (mapeadores, filtros y reductores) para resolver problemas de datos reales.
-
El capítulo 3, "Transformaciones de mapeador", presenta las transformaciones de mapeador más utilizadas:
map()
,filter()
,flatMap()
, ymapPartitions()
. -
El capítulo 4, "Reducciones en Spark", se centra en las transformaciones de reducción (como
reduceByKey()
,groupByKey()
ycombineByKey()
), que desempeñan un papel muy importante en la agrupación de datos por claves. Se dan muchos ejemplos sencillos pero útiles para que puedas utilizar estas reduccionescon eficacia.
-
- Parte II, "Trabajar con datos"
-
Los cuatro capítulos siguientes tratan de la partición de datos, los algoritmos de grafos, la lectura/escritura de datos de/a muchas fuentes de datos diferentes y los algoritmos de clasificación:
-
El Capítulo 5, "Partición de datos", presenta funciones para particionar físicamente los datos en columnas de datos específicas. Esta partición permitirá que tus consultas SQL (por ejemplo, en Amazon Athena o Google BigQuery) analicen una porción de los datos en lugar de todo el conjunto de datos, lo que mejorará el rendimiento de la consulta.
-
El Capítulo 6, "Algoritmos de grafos", presenta uno de los paquetes externos más importantes de Spark, GraphFrames, que puede utilizarse para analizar grandes grafos en el entorno distribuido de Spark.
-
El Capítulo 7, "Interacción con fuentes de datos externas", te muestra cómo leer datos de diversas fuentes de datos y escribirlos en ellas.
-
El Capítulo 8, "Algoritmos de clasificación", presenta dos importantes algoritmos de clasificación, el PageRank (utilizado en los motores de búsqueda) y el producto de clasificación (utilizado en el análisis genético).
-
- Parte III, "Patrones de diseño de datos"
-
Los cuatro capítulos finales cubren patrones prácticos de diseño de datos, que se presentan de manera informal con ejemplos sólidos:
-
El Capítulo 9, "Patrones clásicos de diseño de datos", presenta una selección de patrones fundamentales de diseño de datos, o soluciones reutilizables, que se utilizan habitualmente para resolver diversos problemas de datos. Algunos ejemplos son Entrada-Mapa-Salida e Entrada-Filtro-Salida.
-
El capítulo 10, "Patrones prácticos de diseño de datos", presenta patrones comunes y prácticos de diseño de datos, para tareas como combinar, resumir, filtrar y organizar datos. Estos patrones se presentan de manera informal, con ejemplos prácticos.
-
El Capítulo 11, "Patrones de diseño de uniones", presenta patrones sencillos para unir dos o más conjuntos de datos; se discuten algunos criterios de rendimiento para mejorar la eficacia delos algoritmos de unión.
-
El capítulo 12, "Ingeniería de característicasen PySpark", presenta las técnicas de ingeniería de características más comunes utilizadas en el desarrollo dealgoritmos de aprendizaje automático.
-
- Capítulos adicionales
-
Como no quería hacer este libro demasiado voluminoso, he incluido material adicional sobre temas como TF-IDF, correlación y k-mers como capítulos extraen el repositorio GitHubdel libro.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar enhttps://github.com/mahmoudparsian/data-algorithms-with-spark.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a mahmoud.parsian@yahoo.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Algoritmos de Datos con Spark por Mahmoud Parsian (O'Reilly). Copyright 2022 Mahmoud Parsian, 978-1-492-08238-5".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos, conferencias y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-998-9938 (en Estados Unidos o Canadá)
- 707-829-0515 (internacional o local)
- 707-829-0104 (fax)
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/data-algorithms-with-spark.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media
Síguenos en Twitter: http://twitter.com/oreillymedia
Míranos en YouTube: http://youtube.com/oreillymedia
Agradecimientos
La idea de este libro partió de Jess Haberman (Editora Senior de Adquisiciones de O'Reilly Media), a quien estoy muy agradecida por habérmelo propuesto: ¡muchas gracias, Jess! Estoy en deuda con Melissa Potter (Editora de Desarrollo de Contenidos de O'Reilly Media), que ha trabajado incansablemente conmigo desde el inicio de este proyecto y me ha ayudado mucho a convertirlo en un libro mejor. ¡Muchas gracias, Melissa! Muchas gracias a la correctora, Rachel Head, que ha hecho un trabajo tremendo en la edición de todo el libro; si puedes leer y entender este libro, es gracias a Rachel. Quiero dar las gracias a Christopher Faucher (el editor de producción) por hacer un gran trabajo y asegurarse de que se cumplían los plazos y de que todo estaba en su sitio. Llevar un libro a través de la producción no es un trabajo nada fácil, pero Christopher ha hecho un trabajo magnífico.
Muchas gracias a los revisores técnicos Parviz Deyhim y Benjamin Muskalla por su cuidadosa revisión de mi libro, y por los comentarios, correcciones y sugerencias que se han derivado de ella. También me gustaría dar las gracias especialmente a mi asesor de doctorado y querido amigo, el Dr. Ramachandran Krishnaswamy, de quien he aprendido tanto; apreciaré mi amistad con él para siempre.
Además de las soluciones PySpark que he proporcionado para todos los capítulos en GitHub, Deepak Kumar y Biman Mandal han proporcionado soluciones Scala, lo que constituye un gran recurso para los lectores. Muchas gracias, Deepak y Biman. Por último, pero no por ello menos importante, quiero dar un enorme y chispeante agradecimiento al Dr. Matei Zaharia (creador de Apache Spark) por escribir un prólogo para mi libro; me siento honrado y humilde por sus amables palabras.
Get Algoritmos de datos con Spark now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.