Saltar al contenido

Cómo sumar los valores de una columna de un marco de datos en chispa/scala

Si hallas algún fallo con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.

Solución:

Primero debes importar las funciones:

import org.apache.spark.sql.functions._

Entonces puedes usarlos así:

val df = CSV.load(args(0))
val sumSteps =  df.agg(sum("steps")).first.get(0)

También puede emitir el resultado si es necesario:

val sumSteps: Long = df.agg(sum("steps").cast("long")).first.getLong(0)

Editar:

Para varias columnas (por ejemplo, “col1”, “col2”, …), puede obtener todas las agregaciones a la vez:

val sums = df.agg(sum("col1").as("sum_col1"), sum("col2").as("sum_col2"), ...).first

Edit2:

Para aplicar dinámicamente las agregaciones, están disponibles las siguientes opciones:

  • Aplicando a todas las columnas numéricas a la vez:
df.groupBy().sum()
  • Aplicar a una lista de nombres de columnas numéricas:
val columnNames = List("col1", "col2")
df.groupBy().sum(columnNames: _*)
  • Aplicar a una lista de nombres de columnas numéricas con alias y/o conversiones:
val cols = List("col1", "col2")
val sums = cols.map(colName => sum(colName).cast("double").as("sum_" + colName))
df.groupBy().agg(sums.head, sums.tail:_*).show()

Si quieres sum todos los valores de una columna, es más eficiente usar DataFramees interno RDD y reduce.

import sqlContext.implicits._
import org.apache.spark.sql.functions._

val df = sc.parallelize(Array(10,2,3,4)).toDF("steps")
df.select(col("steps")).rdd.map(_(0).asInstanceOf[Int]).reduce(_+_)

//res1 Int = 19

Simplemente aplique la función de agregación, Suma en tu columna

df.groupby('steps').sum().show()

Siga la documentación http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html

Consulte este enlace también https://www.analyticsvidhya.com/blog/2016/10/spark-dataframe-and-operations/

Sección de Reseñas y Valoraciones

Finalizando este artículo puedes encontrar las interpretaciones de otros creadores, tú incluso puedes insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *