为什么火花中的一些音符工作得很慢,为什么在同一情况下多次执行的时间不同?

问题描述 投票:0回答:1

我的问题是关于在zeppelin中pyspark代码的执行时间。

我有一些笔记,我在其中使用了一些SQL。.topandas() 我的数据大小约为600兆字节。

我的问题是,它需要很长的时间。

如果我使用采样,例如这样。

df.sample(False, 0.7).toPandas()

它就能在可接受的时间内正常工作

另一个奇怪的地方是,当我多次运行这个笔记时,有时工作得快,有时工作得慢。例如,在重启pyspark解释器后的第一次运行,工作得更快。

我怎样才能在稳定的状态下使用zeppelin,哪些参数可以有效地在可接受的时间内运行spark代码?

pandas apache-spark apache-zeppelin spark-notebook
1个回答
0
投票

这里的问题不在于zeppelin,而在于你作为一个程序员。Spark是一个用Scala编写的分布式(集群计算)数据分析引擎,因此它运行在JVM中。Pyspark是Spark的Python API,它利用Py4j库为JVM对象提供一个接口。

方法包括 .toPandas().collect() 返回一个 python 对象,它不仅仅是 JVM 对象的接口(即它实际上包含了你的数据)。它们的成本很高,因为它们需要将你的(分布式)数据从JVM传输到spark驱动内部的python解释器。因此,你应该只在产生的数据较小的时候使用它,并且尽可能地使用 pyspark 数据框工作。

你的其他关于不同执行时间的问题需要和你的集群管理员讨论。网络尖峰和其他用户提交的作业会严重影响你的执行时间。我也很惊讶你在重启spark解释器后的第一次运行速度更快,因为在第一次运行时,sparkcontext被创建,集群资源被分配,这增加了一些开销。

© www.soinside.com 2019 - 2024. All rights reserved.