Qué vas a hacer
Apache Spark es una herramienta para trabajar con tablas de datos demasiado grandes para un solo programa, repartiendo el trabajo en trabajos (jobs). Un DataFrame es el nombre que Spark da a una tabla, y le puedes hacer preguntas con código o con SQL. Tu laboratorio tiene un Spark pequeño y un archivo con 24 pedidos. Vas a mirarlo, filtrarlo, agruparlo y contarlo, a hacer el mismo tipo de pregunta en SQL y, por último, a encontrar el trabajo realizado en la interfaz de Spark.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección y espera a que diga que está en marcha. Hay un solo contenedor, spark, y el terminal llega hasta él por ese nombre y por el puerto 8000. El enlace Spark UI abre su página web, en el puerto 4040. Cada botón Ejecutar de abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.
1. Mira los datos
Spark ha leído orders.csv y lo ha convertido en una tabla llamada orders. Esta pregunta en SQL pide cinco filas de ella: la respuesta es una tabla cuya primera fila es el pedido 1001, de Ada, del Reino Unido, con dos teclados a 25.0. curl envía tu pregunta al servicio de consultas del laboratorio e imprime lo que responde.
curl -s -d 'SELECT * FROM orders LIMIT 5' http://spark:8000/sqlSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
2. Fíltrala con un DataFrame
La misma tabla es un DataFrame llamado orders, y filter se queda con las filas que cumplen la condición. Este comando se queda con los pedidos del Reino Unido: la respuesta es una tabla de siete filas. El segundo comando cuenta todas las filas y imprime 24.
curl -s -d 'orders.filter(orders.country == "UK")' http://spark:8000/dfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
curl -s -d 'orders.count()' http://spark:8000/dfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
3. Agrupa y cuenta
groupBy reúne las filas que comparten país y count cuenta cada grupo. La respuesta tiene cuatro filas: UK 7, Japan 6, France 6 y Spain 5, aunque pueden salir en otro orden, porque Spark no promete ninguno hasta que se lo pidas.
curl -s -d 'orders.groupBy("country").count()' http://spark:8000/dfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
4. Pregunta en SQL
La misma clase de pregunta en SQL: los ingresos de cada país son la cantidad por el precio unitario, sumados, de mayor a menor. En la respuesta, Japan va primero con 717.5, después UK con 670.0, France con 495.0 y Spain con 490.0. Spark convierte el SQL y el código del DataFrame en el mismo tipo de plan.
curl -s -d 'SELECT country, round(sum(quantity * unit_price), 2) AS revenue FROM orders GROUP BY country ORDER BY revenue DESC' http://spark:8000/sqlSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
5. Mira el trabajo en la interfaz de Spark
Abre Spark UI en tu navegador, desde el enlace de la barra de la parte superior de esta lección. La pestaña Jobs enumera el trabajo que ha hecho Spark para tus preguntas, y la pestaña SQL / DataFrame muestra cada consulta con el plan con el que se ejecutó. Vuelve a ejecutar un paso y verás aparecer uno nuevo. Esta es la captura de pantalla que haces cuando entregas tu propia consulta.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio es un solo servicio y nada de lo que hay aquí se corrige solo: el alumno entrega el resultado de una consulta suya, una captura de pantalla de esa consulta en la interfaz de Spark y una frase sobre lo que hizo Spark. Es Spark en modo local, no un clúster, y los datos son un archivo de 24 filas, así que enseña la parte de DataFrame y SQL, pero no la escala. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.