当前位置: 首页 > 知识库问答 >
问题:

为什么pyspark在查找列的最大值时要慢得多?

淳于俊迈
2023-03-14

有没有一个一般的解释,为什么spark需要这么多的时间来计算一个列的最大值?我导入了Kaggle Quora训练集(超过400.000行),我喜欢spark在rowwise特征提取方面所做的工作。但是现在我想“手动”缩放一个列:找到一个列的最大值并除以该值。我尝试了Best way在Spark dataframe列和https://databricks.com/blog/2015/06/02/statistic-and-mathologic-functions with-dataframes-in-spark.html中获得最大值的解决方案。我还尝试了df.topandas(),然后计算了pandas中的最大值(你猜对了,df.topandas花了很长时间)我做的唯一一件事还没有尝试是RDD方式。

在我提供一些测试代码之前(我必须了解如何在spark中生成虚拟数据),我想知道

  • 你能给我一篇讨论这种差异的文章的指针吗?
  • 在我的电脑上spark比Pandas对内存限制更敏感吗?

共有1个答案

沃侯林
2023-03-14

正如@Mattr在评论中所说的那样--除非有特定的理由使用Spark,否则应该使用Pandas

通常,您不需要Apache Spark,除非您遇到了与Pandas有关的MemoryError。但是如果一个服务器的RAM还不够,那么Apache Spark就是适合您的工具。Apache Spark有一个开销,因为它需要首先拆分数据集,然后处理这些分布式块,然后处理和联接“处理”数据,在一个节点上收集数据并返回给您。

 类似资料:
  • 问题开始是因为我有一个表(Clientes),其中主键不是自动递增的。我想选择存储在列数据库中的最大值。 类似于此选择,但具有雄辩的ORM(Laravel): 我该怎么做? 我试过: 我不喜欢做一个简单的原始 我来不了。 谢谢大家!

  • 问题内容: 我有一个简单的任务:计算每个字母在一个字符串中出现的次数。我已经使用了它,但是在一个论坛上我看到了使用/比每个字母都要慢得多的信息。我认为它只能在字符串中进行一次遍历,而解决方案则必须遍历该字符串四次(在这种情况下)。为什么这么慢? 问题答案: 允许您计算任何可哈希对象,而不仅仅是子字符串。两种解决方案都是-time。您的测量结果表明,迭代和散列单个字符的开销大于运行4倍。 可以 使用

  • 我想出了四种方法来解决这个问题,但没有一种方法真正适用于大型RDD,我希望有人能帮助我。 我有一个格式为((x,y),(sim,sim ')的火花RDD,其中x和y是两个索引,sim和sim '是x和y的两个不同的相似性度量。我有兴趣寻找具有最大sim '值的元组。我想出了一些方法来做到这一点,但每种方法都有其问题,最终这些方法都不能应用于大规模的RDD,如10亿元组的RDD。 假设res_dic

  • 问题内容: 复制一份随机播放的列表十次需要我大约0.18秒:(这五次运行) 复制未整理的列表十次需要我大约0.05秒: 这是我的测试代码: 我也尝试使用进行复制,结果相似(即,速度差异很大) 为什么速度相差很大?我知道并理解著名的速度差异,为什么处理排序数组要比未排序数组快?例如,但是在这里我的处理没有决定。只是盲目地复制列表中的引用,不是吗? 我在Windows 10上使用Python 2.7.

  • 问题内容: 我想找到列的2nd,3rd,… nth个最大值。 问题答案: 您可以将列排序为降序格式,然后仅从第n行获取值。 编辑:: 根据评论请求进行了更新。 警告 完全未经测试! 类似于上面的内容对于Oracle应该适用…您可能必须首先正确使用语法!