在使用k均值聚类时,如何设置火花配置以减少混洗?

时间:2018-09-06 14:14:14

标签: apache-spark serialization pyspark apache-spark-sql apache-spark-mllib

我知道有很多“如何调整您的Spark作业”等博客文章和主题,但是不幸的是,我的目标是使用pyspark(k-means)中的内置集群模块,因此建议'使用reduceByKey而不是groupByKey'仍然对我没有多大帮助,因为在调用集群算法之后,我无法真正控制代码中发生的事情,并且显然,它消耗了大量的磁盘空间(在大小为25 Gb的DataFrame上运行)。

有什么办法可以用来绕过此问题,例如建议的配置设置(执行程序内存等)?如果可能的话,我希望将用于tmp文件的磁盘空间保持在100-150 Gb以下。

总的来说,我很感激任何人实际上在大数据上使用mllib的一种聚类算法(或像我这样的大手笔)的人提供的信息。 您是否能够避免大规模改组?如果可以,如何避免?

谢谢!

1 个答案:

答案 0 :(得分:0)

您有足够的资源48个内核和252 Gb,因此如果您的数据帧名称为df,请使用,然后在运行k表示代码之前,请对数据进行缓存,您可以使用persist或cache方法进行相同操作:

df.persist()
df.count()

df.cache()
df.count()

在此之后,我们需要执行一些操作以将数据帧缓存在内存中,这肯定会减少您的混洗,请让我知道它是否对您有用