Apache spark Spark:计算复杂统计数据
我要用spark计算强大的统计数据。从一个数据帧中,必须计算大约50个KPI(每个KPI具有不同的筛选器和sum或avg…),并按5列分组 预期结果如下: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(
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的例子吗?为什么你不能用这些工具来实现它?