首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化这个短火花Apache DataFrame函数

如何优化这个短火花Apache DataFrame函数
EN

Stack Overflow用户
提问于 2019-12-24 19:39:21
回答 1查看 46关注 0票数 0

下面的函数应该连接两个DataFrames并返回每个位置的签出数。它是基于西雅图公共图书馆数据集

代码语言:javascript
复制
  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兆。一排排。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-25 05:56:58

为火花工作表现

  • 在联接之前从dataset中选择必需的列,以减小数据大小。
  • 通过联接列("ItemType")对两个数据集进行分区,以避免洗牌
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59472874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档