2016-07-27 83 views
1

最近我一直在pySpark工作很多,所以我已经习惯了它的语法,不同的API和HiveContext函数。很多时候,当我开始一个项目时,我并没有完全意识到它的作用范围或者输入数据的大小,所以有时候我最终需要分布式计算的全部功能,而在其他项目中,我最终会遇到一些脚本可以在我的本地机器上正常运行。PySpark(本地)与Jupyter笔记本上的Python编程

我的问题是,使用pySpark作为我的主要语言与常规Python /熊猫进行比较,即使只是一些探索性分析,是否存在缺点?我主要问的原因是语言之间切换的认知工作,以及如果我需要分发工作,将我的代码从Python移动到pySpark的麻烦。我知道Python会有更多的功能,但是到目前为止我的当前项目都没有使用任何未被Spark覆盖的库,所以我主要关心速度,内存和其他可能的缺点;哪个在我的本地机器上表现更好?

+2

在我看来,我并没有看到任何劣势。即使使用PySpark,您仍然可以在需要时使用Python库。所以我肯定会推荐你继续使用PySpark,因为你必须使用非常大的数据集。 – KartikKannapur

回答

0

我处于类似的情况。我们已经完成了大部分Python开发工作(主要是Pandas),现在我们正在转向Spark,因为我们的环境已经成熟到可以使用它的程度。

我看到PySpark的最大缺点是当我们必须在整个DataFrame上执行操作时,PySpark并不直接支持库或方法。例如,当试图使用Lifetime库时,PySpark不支持此功能,因此我们必须将PySpark Dataframe转换为Pandas Dataframe(这需要花费大量时间并失去群集的优势),或者将代码转换为PySpark可以通过PySpark DataFrame进行消费和并行处理。

+0

另一个缺点取决于你喜欢如何使用Python - 如果你是一名分析师,你喜欢每隔一段时间查看一次数据。 PySpark需要大量的时间 - 只要在PySpark上调用.take()或.show()方法就可以拖动,因为集群将所有内容都拉回到边缘节点上,Pandas上的.head()方法只需要几秒钟。 – MisterJT