No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Soluci贸n reto joins

17/25
Recursos

Aportes 12

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Note que hay duplicados en el resultado, por lo que le agregue la function distinct()

resultadosDF.join(deportistaOlimpicoDF,\
                 deportistaOlimpicoDF.deportista_id == resultadosDF.deportista_id,
                 "left").join(
                 paisesDF, paisesDF.equipo_id == deportistaOlimpicoDF.equipo_id, 
                 "left").select("medalla", "equipo","sigla").\
                 where(resultadosDF.medalla != "NA").distinct().\
                 sort(col("sigla").desc()).show(20)
+-------+--------------------+-----+
|medalla|              equipo|sigla|
+-------+--------------------+-----+
| Silver|            Zimbabwe|  ZIM|
| Bronze|            Zimbabwe|  ZIM|
|   Gold|            Zimbabwe|  ZIM|
| Silver|              Zambia|  ZAM|
|   Gold|          Yugoslavia|  YUG|
| Silver|          Yugoslavia|  YUG|
| Bronze|          Yugoslavia|  YUG|
| Bronze|West Indies Feder...|  WIF|
| Silver|             Vietnam|  VIE|
|   Gold|             Vietnam|  VIE|
|   Gold|           Venezuela|  VEN|
| Bronze|           Venezuela|  VEN|
| Silver|           Venezuela|  VEN|```

驴Influye en el tiempo de procesamiento el orden en el que ponemos las funciones o Spark ya tiene optimizada esta parte?
No es lo mismo hacer un sort y despu茅s un filter, que hacer el filter y luego el sort por la cantidad de rows y la naturaleza del algoritmo de ordenamiento.

Mi pregunta es: 驴debo de poner atenci贸n a eso o Spark lo hace en autom谩tico?

Tengo la duda respecto a respetar PEP8 y la recomendaci贸n de que los JOIN se deben escribir en una sola l铆nea, en mi caso aunque resolv铆 el reto anterior igual tome la parte que hizo el profesor, aqu铆 mi aporte

resultadoDF.filter(resultadoDF.medalla != "NA") \
    .join(
        deportistaOlimpicoDF,
        resultadoDF.deportista_id == deportistaOlimpicoDF.deportista_id,
        "left"
    ) \
    .join(
        paisesDF,
        deportistaOlimpicoDF.equipo_id == paisesDF.id,
        "left"
    ) \
    .select("medalla", paisesDF.equipo, paisesDF.sigla) \
    .sort(col("sigla").desc()) \
    .show()

Yo not茅 que si los ordenamos de manera ascendente existen datos en Pa铆s y Nombre del equipo 鈥渘ull鈥 por lo que guard茅 todo el c贸digo del profe en una variable llamada " retoClase16 " y le agregu茅 este filtro al final:


retoClase16.filter( (retoClase16.Pa铆s != "null")).show()
+-------+--------------------+----+
|medalla|   Nombre del equipo|Pa铆s|
+-------+--------------------+----+
| Bronze|         Afghanistan| AFG|
| Bronze|         Afghanistan| AFG|
| Silver|Netherlands Antilles| AHO|
|   Gold|             Albania| ALB|
| Bronze|             Albania| ALB|
| Silver|             Albania| ALB|
| Silver|             Algeria| ALG|
| Bronze|             Algeria| ALG|
|   Gold|             Algeria| ALG|
| Silver|             Algeria| ALG|
| Bronze|             Algeria| ALG|
|   Gold|             Algeria| ALG|
| Bronze|             Algeria| ALG|
| Bronze|             Algeria| ALG|
|   Gold|             Algeria| ALG|
| Silver|             Algeria| ALG|
| Bronze|             Algeria| ALG|
|   Gold|             Algeria| ALG|
| Bronze|             Algeria| ALG|
| Bronze|             Algeria| ALG|
+-------+--------------------+----+
only showing top 20 rows

Les comparto una captura de mi salida.

Hice un TOP 10 de los quipos con m谩s y con menos medallas ganadas
Llevo 6 A帽os desde que aprend铆 SQL y hoy en d铆a trato de utilizarlo y de llevarlo en cada cosa que aprendo y esto es prueba de ello (Spark y SQL 鉂)

Hola a todos, agregue un groupby para mejorar la lectura y saber cuantas medalla por pais hay.

resultadoDF.filter(resultadoDF.medalla != "NA") \
    .join(deportistaOlimpicoDF,deportistaOlimpicoDF.deportista_id == resultadoDF.deportista_id,"left") \
    .join(paisesDF,paisesDF.id == deportistaOlimpicoDF.equipo_id, "left") \
    .select("medalla", "equipo","sigla").groupBy("medalla", "equipo").count().sort( col("count").desc() ).show()

Este curso no me gust贸 mucho por varios factores, uno de los principales es que siempre obten铆a errores en los archivos, no s茅 si es que en el github los modificaron pero me la he paso es resolviendo errores y modificando cosas para poder seguir el curso bien, por 煤ltimo opt茅 por ver las clases sin seguir nada y estudiar spark por aparte, con alg煤n curso introductorio de YouTube.

Tambi茅n debe corregir algunas cositas de las convenciones python, pero esto son detalles menores.

Comparto mi soluci贸n.

Esta fue mi soluci贸n, en vez de usar 鈥渇ilter鈥, us茅 un 鈥渨here鈥:

deportistasDF\
  .join(
      resultadosDF,
      deportistasDF.deportista_id == resultadosDF.deportista_id,
      "left"
    ) \
  .join(
    equiposDF,
    deportistasDF.equipo_id == equiposDF.id,
    "left"
    ) \
  .where(resultadosDF.medalla != 'NA') \
  .select(deportistasDF.nombre,
          "edad_al_jugar",
          "medalla",
          equiposDF.equipo,
          col("sigla").alias("pais_equipo")
         ) \
  .show()

Agregu茅 un nuevo csv en la carpeta files donde detalla los campos y los valores de la tabla g茅nero del MR , pero cuando quiero mostrar el contenido del csv en jupyter, me arroja un error indicando que spark no encontr贸 el archivo, entonces hice un Dir para ver el contenido de la carpeta files (Ya que uso windows) y resulta que que no me muestra este archivo, o como que no lo reconoce spark, aunque el archivo esta guardado f铆sicamente en files. A alguien m谩s le pasa esto ? o hay una forma de crear o guardar archivos para que spark los reconozca ??

muy interesante