我这周刚开始使用 PySpark,我可以访问两个的实例安装了 Pandas。但是在 Spark 上安装 Pandas 有什么用呢?
在 PySpark 上运行脚本的全部目的不就是为了克服 Pandas 等软件包的限制吗?
如果 Pandas 在 Spark 上运行,性能会提高吗?它与 Spark 的 RDD 兼容吗?
我这周刚开始使用 PySpark,我可以访问两个的实例安装了 Pandas。但是在 Spark 上安装 Pandas 有什么用呢?
在 PySpark 上运行脚本的全部目的不就是为了克服 Pandas 等软件包的限制吗?
如果 Pandas 在 Spark 上运行,性能会提高吗?它与 Spark 的 RDD 兼容吗?
无需安装 pandas 模块,因为您的数据通常存储在 spark RDD 或 spark dataframes 对象中。
我发现将 Spark 与 pandas 一起使用的唯一兴趣是,当您想要加载本地 CSV/Excel 数据集,然后将其转换为 spark 数据框时。“createDataFrame”方法处理这种方法。
>>> sqlContext.createDataFrame(pandas.DataFrame([[1, 2]])).collect()
[Row(0=1, 1=2)]
其实,是!虽然 PySpark 的内置数据帧针对大型数据集进行了优化,但它们实际上在小型数据集上表现更差(即更慢),通常小于 500gb。如果您使用不同大小的数据集,在 Spark 中运行 Pandas 会非常有用,其中一些数据集很小并且可以保存在本地机器上。话虽如此,如果您的数据太大而无法放在一台机器上,则需要使用 spark 数据帧。
这里有一些很好的链接来了解更多关于 Pandas for Spark 的信息:
有一个你可能感兴趣的项目叫做Koalas,它允许在 Spark 上运行 pandas。
Koalas:Apache Spark 上的 pandas API Koalas 项目使数据科学家在与大数据交互时更加高效,通过
在 Apache Spark 之上实现 pandas DataFrame API。pandas 是 Python 中事实上的标准(单节点)DataFrame 实现,而 Spark 是大数据处理的事实上的标准。使用此软件包,您可以:
如果您已经熟悉 pandas,则无需学习曲线即可立即使用 Spark。
拥有一个既适用于 pandas(测试、较小的数据集)又适用于 Spark(分布式数据集)的代码库。
这里最明显的好处是最后一点:
拥有一个既适用于 pandas(测试、较小的数据集)又适用于 Spark(分布式数据集)的代码库。