Tengo los datos, como el de abajo. Nombre de archivo:babynames.csv.

year    name    percent     sex
1880    John    0.081541    boy
1880    William 0.080511    boy
1880    James   0.050057    boy

Necesito para ordenar la entrada según año y sexo y quiero que la salida de agregados, como el de abajo (esta salida es para ser asignado a un nuevo RDD).

year    sex   avg(percentage)   count(rows)
1880    boy   0.070703         3

No estoy seguro de cómo proceder después de que el siguiente paso en pyspark. Necesito tu ayuda en esto

testrdd = sc.textFile("babynames.csv");
rows = testrdd.map(lambda y:y.split(',')).filter(lambda x:"year" not in x[0])
aggregatedoutput = ????
InformationsquelleAutor Mohan | 2016-03-27

1 Comentario

  1. 18
    1. Siga las instrucciones de el archivo LÉAME incluir chispa-csv paquete
    2. Carga de datos

      df = (sqlContext.read
          .format("com.databricks.spark.csv")
          .options(inferSchema="true", delimiter=";", header="true")
          .load("babynames.csv"))
    3. Importar las funciones necesarias

      from pyspark.sql.functions import count, avg
    4. Grupo y agregados (opcionalmente utilizar Column.alias:

      df.groupBy("year", "sex").agg(avg("percent"), count("*"))

    Alternativamente:

    • elenco percent numéricos
    • remodelar a un formato ((year, sex), percent)
    • aggregateByKey utilizando pyspark.statcounter.StatCounter

Dejar respuesta

Please enter your comment!
Please enter your name here