Apache spark Spark:计算复杂统计数据

Apache spark Spark:计算复杂统计数据,apache-spark,sum,apache-spark-sql,union,Apache Spark,Sum,Apache Spark Sql,Union,我要用spark计算强大的统计数据。从一个数据帧中,必须计算大约50个KPI(每个KPI具有不同的筛选器和sum或avg…),并按5列分组 预期结果如下: col1 col2 col3 col4 kpi1 kpi2 ... kpi50 我对每个KPI有不同的请求(应用于相同的数据帧)。我正在寻找一种最优化的方式 我当前的解决方案是计算每个KPI,其他KPI的值为0,如 df1.filter(...).select("col1", "col2", "col3", "col4", lit(

我要用spark计算强大的统计数据。从一个数据帧中,必须计算大约50个KPI(每个KPI具有不同的筛选器和sum或avg…),并按5列分组

预期结果如下:

col1 col2 col3 col4 kpi1 kpi2 ... kpi50
我对每个KPI有不同的请求(应用于相同的数据帧)。我正在寻找一种最优化的方式

我当前的解决方案是计算每个KPI,其他KPI的值为0,如

    df1.filter(...).select("col1", "col2", "col3", "col4", lit(1) as "col1", "col2", "col3", "col4""kpi1").sum("kpi1").groupBy().withColumn("kpi2", lit(0)).withColumn("kpi3", ....

df2.filter....
然后执行结果df的并集,然后执行groupby和sum like

df1.union(df2).union(...).groupBy("col1", "col2", "col3", "col4").sum()

但在我看来,这是一个常见的问题。是否有一种模式可以使用spark进行此操作,或者有更好的解决方案?

您可以用一些代码进行详细说明吗?编辑我的问题以添加代码withColumn()和用户定义函数(udf)的组合不适合您?你能举一个KPI的例子吗?为什么你不能用这些工具来实现它?