Pyspark和Pandas是否经过认证可以合作?

时间:2017-12-26 07:53:25

标签: python pandas apache-spark pyspark apache-spark-sql

我在将Pyspark数据帧集成/添加到现有Pandas代码时面临很多问题。

1)如果我将Pandas数据帧转换为Pyspark数据帧,则多个操作无法很好地转换,因为Pyspark数据帧似乎不像Pandas数据帧那样丰富。

2)如果我选择使用Pyspark数据帧和Pandas来处理同一代码中的不同数据集,那么当通过map调用的函数包含任何pandas数据帧时,Pyspark转换(如map)似乎根本不起作用。

我在Python中使用pandas和numpy的现有代码;并在一台机器上正常工作。我最初尝试将整个代码转换为Spark数据帧失败,因为Spark数据帧不支持Pandas所做的许多操作。

现在,我正在尝试将pyspark应用于现有代码以从Pyspark的分布式计算中获益。使用Spark 2.1.0(Cloudera parcel)和Anaconda发行版 - 使用Python 2.7.14。

Pyspark和Pandas是否经过认证可以合作? 有什么好的参考资料,我可以找到文档和一起使用它们的例子吗?

您的回复将受到高度赞赏。

1 个答案:

答案 0 :(得分:6)

我不认为pySpark是Pandas的替代品。根据我的理解

我会选择

  • PySpark 我想在大型数据集上进行分布式计算,它可能没有像Pandas这么多内置函数,因为它只是评估主要焦点是分布式计算
  • Pandas 数量有限(可以放在一台机器上)数据我想利用许多内置数据操作功能即可。

编辑:(合并评论)

  

我的挑战是我有一个基于pandas的python代码   我想以分布式方式运行。因此需要在其中使用熊猫   pyspark框架。

PySpark和Pandas 都将其数据结构称为“数据帧”,但它们在运行时是不同的平台

我们所能做的就是,从pandas重写应用程序到PySpark (建议)。如果PySpark中没有任何功能,我们需要通过UDF或UDAF实现它。

另一个替代解决方案是将Pandas数据帧转换为PySpark,但这通常不会被建议,因为Pandas数据帧不是分布式的,并且它可能是未来的瓶颈。

示例(Pandas到PySpark):

import pandas as pd
pandas_df = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
spark_df = spark.createDataFrame(pandas_df)