嗨,我是scala和spark的新手。我正在通过spark sql尝试分组。当我尝试保存或查看输出时。它会抛出以下错误。
value coalesce is not a member of org.apache.spark.sql.RelationalGroupedDataset
这是我的代码。
val fp = filtertable.select($"_1", $"_2", $"_3",$"_4").groupBy("_1", "_2","_3")
fp.show() // throws error
fp.coalesce(1).write.format("csv").save("file://" + test.toString()) //throws error.
任何帮助将不胜感激。
答案 0 :(得分:3)
问题表明您希望以csv格式在文本文件中编写分组数据。如果我的分析正确无误,那么groupBy
上的 rdd
应该是您想要的解决方案 groupBy
dataframe
需要{ {1}}要遵循。因此,您必须将aggregation
转换为dataframe
,应用rdd
,最后将输出写为groupBy
文件
csv
我希望答案很有帮助
答案 1 :(得分:1)
如果您只想返回分组的项目,那么您只需选择未分组列的第一项,然后选择分组列,如下所示:
val fp = filtertable
.select($"_1", $"_2", $"_3", $"_4")
.groupBy($"_1", $"_2", $"_3")
.agg(first($"_4"))
.select($"_1", $"_2", $"_3")
答案 2 :(得分:0)
您不需要groupBy
,因为您不会在分组的列上进行任何汇总。您应该改用distinct
。
val fp = filtertable.select($"_1", $"_2", $"_3").distinct()