Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

El largo linaje de predecesores de Apache Spark, desde MPI (interfaz de paso de mensajes) hasta MapReduce, hizo posible escribir programas que aprovechan los recursos masivos al tiempo que se abstraen de los detalles de los sistemas distribuidos. Por mucho que las necesidades de procesamiento de datos hayan motivado el desarrollo de estos marcos, en cierto modo el campo de los grandes datos se ha relacionado tanto con ellos que su alcance se define por lo que estos marcos pueden manejar. La promesa original de Spark era llevar esto un poco más lejos: hacer que escribir programas distribuidos pareciera escribir programas normales.

El aumento de la popularidad de Spark coincidió con el del ecosistema de datos Python (PyData). Así que tiene sentido que la API Python de Spark -PySpark- haya crecido significativamente en popularidad en los últimos años. Aunque el ecosistema PyData ha puesto en marcha recientemente algunas opciones de programación distribuida, Apache Spark sigue siendo una de las opciones más populares para trabajar con grandes conjuntos de datos en todos los sectores y dominios. Gracias a los recientes esfuerzos por integrar PySpark con las demás herramientas PyData, aprender el framework puede ayudarte a aumentar significativamente tu productividad como profesional de la ciencia de datos.

Creemos que la mejor forma de enseñar ciencia de datos es con el ejemplo. Con ese fin, hemos elaborado un libro de aplicaciones, tratando de tocar las interacciones entre los algoritmos, conjuntos de datos y patrones de diseño más comunes en la analítica a gran escala. Este libro no está pensado para que lo leas de cabo a rabo: ve a un capítulo que se parezca a algo que estás intentando conseguir, o que simplemente despierte tu interés, y empieza por ahí.

¿Por qué escribimos este libro ahora?

Apache Spark experimentó una importante actualización de la versión en 2020: la versión 3.0. Una de las mayores mejoras fue la introducción de la Ejecución Adaptativa de Spark. Esta característica elimina una gran parte de la complejidad en torno al ajuste y la optimización. No hacemos referencia a ella en el libro porque está activada por defecto en Spark 3.2 y versiones posteriores, por lo que obtienes automáticamente las ventajas.

Los cambios en el ecosistema, combinados con la última gran versión de Spark, hacen que esta edición sea muy oportuna. A diferencia de ediciones anteriores de Advanced Analytics with Spark, que optaron por Scala, utilizaremos Python. Cubriremos las buenas prácticas y nos integraremos con el ecosistema más amplio de la ciencia de datos en Python cuando sea apropiado. Todos los capítulos se han actualizado para utilizar la última API de PySpark. Se han añadido dos capítulos nuevos y varios capítulos han sufrido importantes reescrituras. No cubriremos las bibliotecas de streaming y grafos de Spark. Con Spark en una nueva era de madurez y estabilidad, esperamos que estos cambios preserven el libro como un recurso útil sobre analítica en los próximos años.

Cómo está organizado este libro

El capítulo 1 sitúa a Spark y PySpark en el contexto más amplio de la ciencia de datos y el análisis de big data. Después, cada capítulo comprende un análisis autónomo utilizando PySpark. El Capítulo 2 introduce los fundamentos del procesamiento de datos en PySpark y Python a través de un caso de uso en la limpieza de datos. Los siguientes capítulos profundizan en la carne y la patata del aprendizaje automático con Spark, aplicando algunos de los algoritmos más comunes en aplicaciones canónicas. Los capítulos restantes son un poco más de cajón y aplican Spark en aplicaciones un poco más exóticas: por ejemplo, la consulta de Wikipedia a través de relaciones semánticas latentes en el texto, el análisis de datos genómicos y la identificación de imágenes similares.

Este libro no trata de los méritos y desventajas de PySpark. Tampoco trata de otras cosas. Introduce el modelo de programación Spark y los fundamentos de la API Python de Spark, PySpark. Sin embargo, no pretende ser una referencia de Spark ni proporcionar una guía exhaustiva de todos los recovecos de Spark. Tampoco intenta ser una referencia sobre aprendizaje automático, estadística o álgebra lineal, aunque muchos de los capítulos proporcionan algunos conocimientos básicos sobre estos temas antes de utilizarlos.

En su lugar, este libro ayudará al lector a hacerse una idea de lo que es utilizar PySpark para análisis complejos de grandes conjuntos de datos, cubriendo todo el proceso: no sólo la creación y evaluación de modelos, sino también la limpieza, el preprocesamiento y la exploración de datos, prestando atención a la conversión de los resultados en aplicaciones de producción. Creemos que la mejor forma de enseñar esto es con el ejemplo.

He aquí ejemplos de algunas tareas que se abordarán en este libro:

Predecir la cubierta forestal

Predecimos el tipo de cubierta forestal utilizando características relevantes como la ubicación y el tipo de suelo mediante árboles de decisión (véase el Capítulo 4).

Buscar entradas similares en Wikipedia

Identificamos las relaciones entre las entradas y consultamos el corpus de Wikipedia utilizando técnicas de PLN (procesamiento del lenguaje natural) (véase el Capítulo 6).

Comprender la utilización de los taxis de Nueva York

Calculamos el tiempo medio de espera de los taxis en función de la ubicación, realizando un análisis temporal y geoespacial (véase el Capítulo 7).

Reducir el riesgo de una cartera de inversiones

Estimamos el riesgo financiero de una cartera de inversión mediante la simulación de Montecarlo (véase el Capítulo 9).

En la medida de lo posible, intentamos no limitarnos a proporcionar una "solución", sino demostrar el flujo de trabajo completo de la ciencia de datos, con todas sus iteraciones, callejones sin salida y reinicios. Este libro será útil para sentirse más cómodo con Python, Spark y el aprendizaje automático y el análisis de datos. Sin embargo, están al servicio de un objetivo mayor, y esperamos que, sobre todo, este libro te enseñe a abordar tareas como las descritas anteriormente. Cada capítulo, en unas 20 míseras páginas, intentará acercarse lo más posible a la demostración de cómo construir una pieza de estas aplicaciones de datos.

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.

Este elemento significa un consejo o sugerencia.

Este elemento significa una nota general.

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 en https://github.com/sryza/aas.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

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, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Advanced Analytics with PySpark por Akash Tandon, Sandy Ryza, Uri Laserson, Sean Owen y Josh Wills (O'Reilly). Copyright 2022 Akash Tandon, 978-1-098-10365-1".

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

Aprendizaje en línea O'Reilly

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 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 https://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 enumeramos erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/adv-analytics-pyspark.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Síguenos en Twitter: https://twitter.com/oreillymedia

Míranos en YouTube: https://youtube.com/oreillymedia

Agradecimientos

Ni que decir tiene que no estarías leyendo este libro si no fuera por la existencia de Apache Spark y MLlib. Todos debemos dar las gracias al equipo que lo ha construido y lo ha hecho de código abierto, así como a los cientos de colaboradores que lo han enriquecido.

Queremos dar las gracias a todos los que dedicaron mucho tiempo a revisar con ojos expertos el contenido de las ediciones anteriores del libro: Michael Bernico, Adam Breindel, Ian Buss, Parviz Deyhim, Jeremy Freeman, Chris Fregly, Debashish Ghosh, Juliet Hougland, Jonathan Keebler, Nisha Muktewar, Frank Nothaft, Nick Pentreath, Kostas Sakellis, Tom White, Marcelo Vanzin y, de nuevo, Juliet Hougland. ¡Gracias a todos! Os debemos una. Esto ha mejorado mucho la estructura y la calidad del resultado.

Sandy también quiere dar las gracias a Jordan Pinkus y Richard Wang por ayudarnos con parte de la teoría que subyace al capítulo sobre riesgos.

Gracias a Jeff Bleiel y a O'Reilly por la experiencia y el gran apoyo prestados para que este libro se publicara y llegara a tus manos.

Get Analítica avanzada con PySpark 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.