【问题标题】:how to estimate basic statistics group of data with spark sql?如何使用 spark sql 估计基本统计数据组?
【发布时间】:2021-02-01 19:31:25
【问题描述】:

我有一个与下面的示例类似的表格:

id     value      group
a        2         0
b        3         0
c        4         0
d        6         0
e        4         0
f        3         1
g        2         1
h        1         1
i        0         1
j        3         1

group 列是每个数据组的标志。从 0 到 0 是第一组的符号,因此从 1 到 1 也是第二组的符号。我想创建一个新表,它是每个组的基本统计(均值、中位数、标准偏差、方差等)估计的结果。

我意识到我需要先聚合它们才能估计基本统计数据。

想要的表应该是这样的:

group   max    min    mean    median    stdt    var
0        6      2     3,8      
1        3      0
2

我应该如何编写我的 spark sql 以获得所需的结果?

提前谢谢你。

【问题讨论】:

标签: apache-spark-sql statistics


【解决方案1】:
import spark.implicits._

import org.apache.spark.sql.functions._

val sourceDF = Seq(
  ("a", 2, 0),
  ("b", 3, 0),
  ("c", 4, 0),
  ("d", 6, 0),
  ("e", 4, 0),
  ("f", 3, 1),
  ("g", 2, 1),
  ("h", 1, 1),
  ("i", 0, 1),
  ("j", 3, 1)
).toDF("id","value","group")

val resDF = sourceDF
  .groupBy("group")
  .agg(max("value")
  , min("value")
  , mean("value")
  )

resDF.show(false)
//  +-----+----------+----------+----------+
//  |group|max(value)|min(value)|avg(value)|
//  +-----+----------+----------+----------+
//  |1    |3         |0         |1.8       |
//  |0    |6         |2         |3.8       |
//  +-----+----------+----------+----------+

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2018-10-26
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多