下面的函数应该连接两个DataFrames并返回每个位置的签出数。它是基于西雅图公共图书馆数据集。
def topKCheckoutLocations(checkoutDF: DataFrame, libraryInventoryDF: DataFrame, k: Int): DataFrame = {
checkoutDF
.join(libraryInventoryDF, "ItemType")
.groupBy("ItemBarCode", "ItemLocation") //grouping by ItemBarCode and ItemLocation
.agg(count("ItemBarCode")) //counting number of ItemBarCode for each ItemLocation
.withColumnRenamed("count(ItemBarCode)", "NumCheckoutItemsAtLocation")
.select($"ItemLocation", $"NumCheckoutItemsAtLocation")
}当我运行这个程序时,它需要很长时间才能完成(40+分钟),而且我很确定它不应该超过几分钟。我能改变调用的顺序以减少计算时间吗?
由于我从未设法完成计算,所以我从未真正检查输出是否正确。我想是的。
checkoutDF有3兆。一排排。
发布于 2019-12-25 05:56:58
为火花工作表现
https://stackoverflow.com/questions/59472874
复制相似问题