我在将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是否经过认证可以合作? 有什么好的参考资料,我可以找到文档和一起使用它们的例子吗?
您的回复将受到高度赞赏。
答案 0 :(得分:6)
我不认为pySpark是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)