¿Cómo puedo suma de varias columnas de Chispa? Por ejemplo, en SparkR el siguiente código funciona para obtener la suma de una columna, pero si trato de obtener la suma de ambas columnas en df, me sale un error.

# Create SparkDataFrame
df <- createDataFrame(faithful)

# Use agg to sum total waiting times
head(agg(df, totalWaiting = sum(df$waiting)))
##This works

# Use agg to sum total of waiting and eruptions
head(agg(df, total = sum(df$waiting, df$eruptions)))
##This doesn't work

Ya sea SparkR o PySpark código de trabajo.

4 Comentarios

  1. 3
    org.apache.spark.sql.functions.sum(Column e)

    Función de agregado: devuelve la suma de todos los valores en la expresión.

    Como se puede ver, sum tiene sólo una columna como entrada para sum(df$waiting, df$eruptions) puedo trabajar.Desde la wan a la suma de los campos numéricos, puede hacersum(df("waiting") + df("eruptions")).Si usted wan para resumir los valores para cada una de las columnas a continuación, puede df.agg(sum(df$waiting),sum(df$eruptions)).show

    • Para mí, este trabajado df.withColumn("newCol", col("col1")+col("col2"))
    • sí, también es una alternativa.
  2. 10

    Para PySpark, si usted no desea explícitamente el tipo de las columnas:

    from operator import add
    from functools import reduce
    new_df = df.withColumn('total',reduce(add, [F.col(x) for x in numeric_col_list]))
  3. 2

    puedes hacer algo como lo de abajo en pyspark

    >>> from pyspark.sql import functions as F
    >>> df = spark.createDataFrame([("a",1,10), ("b",2,20), ("c",3,30), ("d",4,40)], ["col1", "col2", "col3"])
    >>> df.groupBy("col1").agg(F.sum(df.col2+df.col3)).show()
    +----+------------------+
    |col1|sum((col2 + col3))|
    +----+------------------+
    |   d|                44|
    |   c|                33|
    |   b|                22|
    |   a|                11|
    +----+------------------+
  4. 1

    sparkR código:

    library(SparkR)
    df <- createDataFrame(sqlContext,faithful)
    w<-agg(df,sum(df$waiting)),agg(df,sum(df$eruptions))
    head(w[[1]])
    head(w[[2]])

Dejar respuesta

Please enter your comment!
Please enter your name here