/ / Spark: value mean не е член на Array [Any] - scala, apache-spark

Spark: средната стойност не е член на Array [Any] - scala, apache-spark

Аз "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 Типът данни.

Надявам се, че отговорът е полезен