javaspark数据集中的GroupBy和Aggregate函数
我试图在一个数据集上执行以下操作,以便对列Expense进行分组和聚合,以使其相加。但这在RelationalGroupedDataset的正常数据集上不起作用。如何在普通数据集中实现以下操作javaspark数据集中的GroupBy和Aggregate函数,java,apache-spark,group-by,aggregate-functions,Java,Apache Spark,Group By,Aggregate Functions,我试图在一个数据集上执行以下操作,以便对列Expense进行分组和聚合,以使其相加。但这在RelationalGroupedDataset的正常数据集上不起作用。如何在普通数据集中实现以下操作 dataset.select.(col("col1"),col("col2"),col("expend")).groupBy(col("col1"),col("col2"),col("expend")).agg(sum("expend")) SQL查询看起来像 按col1、col2从表组中选择col1、
dataset.select.(col("col1"),col("col2"),col("expend")).groupBy(col("col1"),col("col2"),col("expend")).agg(sum("expend"))
SQL查询看起来像
按col1、col2从表组中选择col1、col2、SUM(expense)
当我尝试此代码时,这些列会重复出现。
dataset.columns()
给我提供了[col1,col2,expend,expend]
方法正确吗?我用下面的代码来解决这个问题。
创建一个列表list aggCols代码>
这将具有列的操作。
在这里,我添加为
aggCols.add(expr("sum(expend1)"));
addCols.add(expr("sum(expend2)"));
dataset.select.(col("col1"),col("col2"),col("expend"))
.groupBy(col("col1"),col("col2"))
.agg(aggCols.get(0), JavaConverters.asScalaIteratorConverter(aggCols.subList(1,aggCols.size()).iterator()).asScala().toSeq());
当我只有一个列要求和时,我添加了一些检查,然后我直接进行求和 你能提供错误信息吗?@ShankarKoirala我得到了副本Shankar@ShankarKoirala你想在这里加上什么吗?你想按col1和col2
分组并计算支出的总和吗?是@ShankarKoirala假设我有两行数据(item1,item2,4,4)
&(item1,item2,5,5)
我希望它被分组为(item1,item2,9,9)
这就是我想要的结果。有什么建议如何处理这个自定义项吗