Аз "m, използвайки RDD от dataframe за изчисляване на средно за колона. Тук е моят RDD
dataframe.rdd.map(x => (x(2))).take(5)
# res51: Array[Any] = Array(499, 200, 400, 151, 65)
Търся средната стойност на този масив. Тук е моят код:
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
Отговори:
2 за отговор № 1Ако имате dataframe
както е показано по-долу
+----+----+------+
|col1|col2|col3 |
+----+----+------+
|a |1 |908.76|
|b |2 |901.74|
|c |3 |83.71 |
|d |5 |39.36 |
|e |2 |234.64|
+----+----+------+
Можете да изчислите означава в dataframe
като се използва mean
функция като
import org.apache.spark.sql.functions._
df.select(mean("col3").as("mean").show(false)
който трябва да ви даде
+-------+
|mean |
+-------+
|433.642|
+-------+
Ако настоявате да използвате RDD
след това можете да направите следното
df.rdd.map(x => (x(2).asInstanceOf[Double])).mean
тук съм използвал 2
защото това е колоната, която искам mean
. Единствената грешка, която направихте, беше, че сте забравили да въведете x(3)
променлива, която е по подразбиране Any
и scala компилатор не можеше да намери метод, който да означава за Any
Типът данни.
Надявам се, че отговорът е полезен