Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javaspark数据集中的GroupBy和Aggregate函数_Java_Apache Spark_Group By_Aggregate Functions - Fatal编程技术网

javaspark数据集中的GroupBy和Aggregate函数

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、

我试图在一个数据集上执行以下操作,以便对列Expense进行分组和聚合,以使其相加。但这在RelationalGroupedDataset的正常数据集上不起作用。如何在普通数据集中实现以下操作

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)
这就是我想要的结果。有什么建议如何处理这个自定义项吗