Używam RDD z ramki danych do obliczenia średniej dla kolumny.Tutaj jest moje RDD
dataframe.rdd.map(x => (x(2))).take(5)
# res51: Array[Any] = Array(499, 200, 400, 151, 65)
Szukam średniej tego Array, oto mój kod:
dataframe.rdd.map(x => (x(2))).mean
<console>:31: error: value mean is not a member of org.apache.spark.rdd.RDD[Any]
dataframe.rdd.map(x => (x(2))).mean
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli masz dataframe
jak poniżej
+----+----+------+
|col1|col2|col3 |
+----+----+------+
|a |1 |908.76|
|b |2 |901.74|
|c |3 |83.71 |
|d |5 |39.36 |
|e |2 |234.64|
+----+----+------+
Możesz obliczyć oznaczać w dataframe
używając mean
funkcjonować jako
import org.apache.spark.sql.functions._
df.select(mean("col3").as("mean").show(false)
który powinien ci dać
+-------+
|mean |
+-------+
|433.642|
+-------+
Jeśli nalegasz na używanie RDD
następnie możesz wykonać następujące czynności
df.rdd.map(x => (x(2).asInstanceOf[Double])).mean
tutaj użyłem 2
ponieważ to jest ta kolumna, której bym chciał mean
. Jedynym błędem, który popełniłeś, było to, że zapomniałeś wpisać typ x(3)
zmienna, która była domyślna Any
i scala kompilator nie można znaleźć metody średniej dla Any
typ danych.
Mam nadzieję, że odpowiedź jest pomocna