当我在DataFrame上调用describe函数时,就会出现问题:

val statsDF = myDataFrame.describe()

调用describe函数将产生以下输出:
statsDF: org.apache.spark.sql.DataFrame = [summary: string, count: string]

我可以通过调用statsDF正常显示statsDF.show()
+-------+------------------+
|summary|             count|
+-------+------------------+
|  count|             53173|
|   mean|104.76128862392568|
| stddev|3577.8184333911513|
|    min|                 1|
|    max|            558407|
+-------+------------------+

我现在想从statsDF获取标准偏差和均值,但是当我尝试通过执行以下操作来收集值时:

val temp = statsDF.where($"summary" === "stddev").collect()

我收到了Task not serializable异常。

当我打电话时,我也面临着同样的异常(exception):

statsDF.where($"summary" === "stddev").show()

看来我们无法过滤describe()函数生成的DataFrame?

最佳答案

我考虑过一个玩具数据集,其中包含一些健康疾病数据


val stddev_tobacco = rawData.describe().rdd.map{
    case r : Row => (r.getAs[String]("summary"),r.get(1))
}.filter(_._1 == "stddev").map(_._2).collect

10-05 19:08