No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Quedan menos de 24 hrs para aprender Inglés, AI y más a precio especial.

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
1 Hrs
40 Min
13 Seg

Operaciones numéricas

12/25
Recursos

Aportes 12

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Este es mi resultado de conclusionRDD.

¿ A quien le dio el mismo resultado?

[('USA', 32137),
 ('URS', 14834),
 ('GBR', 10925),
 ('GER', 10896),
 ('FRA', 9265),
 ('ITA', 8755),
 ('SWE', 8110),
 ('CAN', 7209),
 ('AUS', 6755),
 ('HUN', 6142),
 ('GDR', 5992),
 ('NOR', 5627),
 ('CHN', 5362),
 ('NED', 5351),
 ('RUS', 5298),
 ('JPN', 4702),
 ('FIN', 4464),
 ('SUI', 3530),
 ('KOR', 3472),
 ('ROU', 3317)]```

Hice un gráfico con los puntos acumulados de los 50 países con más puntos

Si les interesa el código es este:

plt.figure(figsize=(10,5))
plt.scatter(resultado_valor_pais.map(lambda x:x[0]).take(50),resultado_valor_pais.map(lambda x:x[1]).take(50) 
            , color='r')
plt.xticks(rotation=90)
plt.xlabel('Paises',labelpad=15)
plt.ylabel('Puntos',labelpad=15)
plt.show()

Aqui mi resultado:

[('ITA', 74920),
 ('NED', 65560),
 ('GER', 22323),
 ('JPN', 19950),
 ('NZL', 9220),
 ('TCH', 8160),
 ('BLR', 5012),
 ('RSA', 4735),
 ('TUR', 3965),
 ('GHA', 3430)]

Me da el mismo resultado de los que hicieron la modificación en el código:

conclusion = PaisesMedallas3.reduceByKey((add)).sortBy(lambda x: [x[1]], ascending=False)
conclusion.take(5)
[('USA', 32137), ('URS', 14834), ('GBR', 10925), ('GER', 10896), ('FRA', 9265)]

Creo que para comodidad de todos, y poder entender spark. Creo que es importante saber algo de programción funcional. Platzi tiene uno con scala, veanlo para sacarle más provecho es estas clases

Mi solución, sin usar:

from operator import add

Aquí está el código que usé para obtener el mismo resultado, pero sin importar operator:

paises_medallas.groupByKey().mapValues(sum).sortBy(lambda row:row[1],ascending=False)

En una situación de la vida real es importante tener sensibilidad de los números del negocio y hacer una conciliación con alguna cifra conocida, por ejemplo en este caso habría que dudar del resultado, si tenemos el contexto de que Estados Unidos y Rusia han sido punteros siempre en juegos Olímpicos, situación que el resultado del código no refleja.

A mi me dio uno muy parecido jose

from pyspark.sql import SparkSession
from operator import add

Crear una instancia de SparkSession

spark = SparkSession.builder
.appName(“Mi aplicacion de Spark”)
.getOrCreate()

Obtener el contexto de Spark

sc = spark.sparkContext

Ruta del archivo CSV

path = “C:\Users\Benja\OneDrive\Escritorio\curso-apache-spark-platzi-master\files\”

Leer el archivo CSV y aplicar la transformación

equiposOlimpicosRDD = sc.textFile(path + “paises.csv”)
.map(lambda line: line.split(","))

Leer el archivo de resultados

resultado = sc.textFile(path + “resultados.csv”)
.map(lambda line: line.split(","))

Filtrar resultados y obtener ganadores

resultadoGanador = resultado.filter(lambda line: ‘NA’ not in line[1])

Obtener valores de las medallas

valoresMedallas = {
‘Gold’: 7,
‘Silver’: 5,
‘Bronze’: 4
}

Realizar join entre deportistas, países y resultados

deportistapaises = deportistaOlimpicoRDD.map(lambda l: [l[-1], l[:-1]])
.join(equiposOlimpicosRDD.map(lambda x: [x[0], x[2]]))

paisesMedallas = deportistapaises.join(resultadoGanador)

Calcular la suma de las medallas por país

paisesMedallas_rdd = paisesMedallas.map(lambda x: (x[1][0][-1], valoresMedallas[x[1][1]]))
conclusion = paisesMedallas_rdd.groupByKey().mapValues(sum).sortBy(lambda row: row[1], ascending=False)

Obtener el resultado

resultado_final = conclusion.collect()

Imprimir el resultado

for pais, medallas in resultado_final:
print(pais, medallas)

interesante

Aca mis resultados.
Aun me sigue costando entender la funcion Lambda-Map-Reduce