嗨,在大学的数据科学领域,我们学到了如果我们想处理小数据,我们应该使用pandas,如果我们处理大数据,我们可以使用spark,比如python程序员pyspark。
最近,我在一个hackaton in the cloud(azure synapse,在spark内部工作)中看到了在笔记本中导入Pandas(我想代码是好的,因为它是由微软人编写的)
import pandas
from azureml.core import Dataset
training_pd = training_data.toPandas().to_csv('training_pd.csv', index=False)
他们为什么这么做?
3条答案
按热度按时间vlju58qv1#
Bassilly似乎是那个让这项工作在Pandas身上更合拍的人。当然,pandas不能扩展,如果您的数据集增长,您需要更多的ram,可能需要更快的cpu(单核性能方面更快)。虽然这可能对某些场景有限制,但在本例中,csv不足以使用spark。我看不出还有别的原因。
nzk0hqpo2#
PandasDataframe不支持并行化。另一方面,使用pandas,您不需要集群,您有更多的库和易于扩展的示例。让我们说实话,它的性能对于每个不需要扩展的任务都更好。
因此,如果你开始你的数据工程生活,你会被两件事困住:
外部化知识:现成的代码、片段和项目;
内化知识:您熟悉并更喜欢的api、模式、保证以及如何编写代码的直觉。
对一个拿着锤子的人来说,一切都像钉子。这并不总是坏事。如果你有严格的期限,做得比完美更好!最好现在就使用Pandas,而不是多年学习合适的可扩展解决方案。
想象一下,你想在pyspark模式下使用ApacheZeppelin笔记本,使用所有这些很酷的可视化效果。但它不太符合你的要求,你正在考虑如何快速解决这个问题。同时,你可以立即谷歌一个现成的解决方案Pandas。这是一条路要走;你没有别的选择来满足你的最后期限。
另一种猜测是,如果您用python编写代码,您可以使用交互式调试器在pycharm这样的每一个优秀ide中轻松地进行调试。而这通常对在线笔记本电脑是无效的,尤其是在spark模式下。你知道spark有什么好的调试器吗?我什么都不知道(据我所知,来自idea的bigdatatools插件的人正在尝试为scala解决这个问题,但不是为python)。因此,您必须在ide中编写代码,然后将其复制粘贴到笔记本中。
最后但同样重要的是,这可能只是一个错误。人们并不总是完全知道自己在做什么,尤其是在大数据这样的大领域。你很幸运有这门大学课程。互联网上的普通人没有这样的选择。
我应该到此为止,因为前面只有猜测。
mbskvtky3#
使用pyspark和pandas的主要区别在于语法。为了说明这一区别,我提供了一个简单的示例来读取Parquet文件并对数据进行一些转换。如您所见,pyspark和pandas的语法完全不同,这意味着您的pandas知识不能直接转移到pyspark。
这些用法上的差异,以及语法上的差异,意味着当从使用纯pandas代码转换到纯pyspark代码时,有一条学习曲线。这也意味着您的遗留pandas代码不能直接在带有pyspark的spark上使用。幸运的是,有一些解决方案允许您在spark上使用您的代码和知识。
利用pandas的spark功能的解决方案在spark上使用pandas代码主要有两种选择:考拉和pandas udf
虽然不建议在与Pypark合作时使用Pandas,但有时,我也看到有人这样做。