熊猫和火花在python中'in-memory'处理方面的区别



我已经了解了spark的内存处理,这是优于pandas的优势。但是我在下面比较了pandas和spark程序,它们创建数据框架并连接两个列。在这两种情况下,spark和pandas都将在"内存中"进行处理,因为数据应该在RAM中进行处理。那么spark如何在这种情况下比pandas更有优势呢?因为两者都是在内存中处理的?还有,我们什么时候应该去找火花和熊猫?

火花:-

df=spark.createDataFrame([
("Red",1,"Apple",date(2021,1,1),''),
("Black",2,"Grape",date(2021,2,3),''),
("Yellow",3,"Banana",date(2022,2,4),'')
],schema="color string,sr_no long,fruit string,orderDate date,desc string")
df2 = df.withColumn("desc", concat(col("color"), col("fruit")))
print(df2.show())
熊猫

: -

data = {'color': ['Red', 'Black', 'Yellow'],
'sr_no': ['1', '2', '3'],
'fruit':['Apple','Grape','Banana'],
'orderDate':['2021-01-01','2021-02-03','2022-02-04']
}   
df = pd.DataFrame.from_dict(data)
df['desc']=df['color']+df['fruit']
print(df)

o/p: -

color,sr_no,fruit,orderDate,desc
Red,1,Apple,2021-01-01,RedApple
Black,2,Grape,2021-02-03,BlackGrape
Yellow,3,Banana|2022-02-04,YellowBanana

(Py)Spark是为数据集设计的,即从多个gb到pb。Pandas原生地可以处理写入时适合本地内存的数据,通常是几个gb的.

PySpark的成本是复杂性和金钱:你需要一个需要管理的机器集群。这就是为什么坚持使用Pandas通常是一个好主意,直到您需要更多的并行化或在一个时间范围内处理更多的数据,而不是通过本地分块处理。

请注意PySpark并不是pandas的临时替代品,它们在语法上有一些不同,但代码看起来是相似的。

Python还有一个Dask库,它允许你使用与pandas基本兼容的语法来进行分布式计算。

相关内容

  • 没有找到相关文章

最新更新