spark数据集组和由总和
问题描述:
我使用Spark 1.6.1和Java作为编程语言。 下面的代码是工作的罚款与dataframes:spark数据集组和由总和
simpleProf.groupBy(col("col1"), col("col2"))
.agg(
sum("CURRENT_MONTH"),
sum("PREVIOUS_MONTH")
);
但是,它不使用数据集,任何想法如何做同样在Java数据集/火花?
干杯
答
这应该工作你的情况。
simpleProf.groupBy(simpleProf.col("col1"), simpleProf.col("col2"))
.agg(
sum(simpleProf.col("CURRENT_MONTH")),
sum(simpleProf.col("PREVIOUS_MONTH"))
);
或运行SQL查询
simpleProf.registerTempTable("prof");
sqlContext.sql("SELECT sum(CURRENT_MONTH),sum(PREVIOUS_MONTH) FROM prof group by (CURRENT_MONTH, PREVIOUS_MONTH))
答
它不工作,在这个意义上,GROUPBY后,我收到了GroupedDataset对象,当我尝试应用功能AGG它需要typedColumn而不是列。
啊,还有是因为数据集和数据帧的星火2.X合并,那里是一个groupBy
与关系列作品,并groupByKey
与类型化的列作品只是在这个有些混乱。因此,鉴于您在1.6中使用了明确的数据集,那么解决方案是通过.as
方法来表示您的列。
sum("CURRENT_MONTH").as[Int]
你可以发布你的代码不工作吗?这应该工作,所以这取决于你如何试图做到这一点。 –
在我的情况下,它也可以。你可以粘贴你的例外? –
您能否详细说明_“它不使用数据集”_?你怎么知道它不能使用数据集?什么是导致你相信的输出? –