/ / Spark: wartość średnia nie jest członkiem Array [Any] - scala, apache-spark

Spark: wartość średnia nie jest członkiem Array [Any] - scala, apache-spark

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 № 1

Jeś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