如何使用reduce功能而不是groupby在Dataframe的多列上汇总总和?

时间:2019-11-17 06:46:52

标签: scala apache-spark

如何使用reduce函数而不是groupby在Dataframe的多列上汇总总和?因为,groupby sum现在要花很多时间,所以我正在考虑使用reduce函数。任何线索都会有所帮助。

Input:

| A | B | C | D |
| x | 1 | 2 | 3 |
| x | 2 | 3 | 4 |

CODE:

    dataFrame.groupBy("A").sum()

Output:

| A | B | C | D |
| x | 3 | 5 | 7 |

1 个答案:

答案 0 :(得分:0)

您必须将#include <stdio.h> #include <stdlib.h> void **alloc(int n,int m) { int **x=(int**)malloc(n*sizeof(int*)); for(int i=1; i<=n; i++) x[i] =(int*)malloc(m*sizeof(int*)); return x ; } void read(int **a,int n,int m,FILE *f) { for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) fscanf(f,"%d",&a[i][j]); } void print(int **a,int n,int m) { for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) printf("%d ",a[i][j]); printf("\n"); } } void transpose(int **a,int n,int m,int ***b) { for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) b[j][i]=a[i][j]; } int main() { int n,m; FILE *f; f=fopen("in.txt","r"); if(f==NULL) printf("Error"); fscanf(f,"%d %d",&n,&m); int **a=alloc(n,m); read(a,n,m,f); int **b=alloc(m,n); transpose(a,n,m,b); print(b,m,n); return 0; } 转换为DataFrame才能执行RDD操作。

reduceByKey

一旦创建了RDD,就可以使用reduceByKey添加多列的值

val rows: RDD[Row] = df.rdd