我们遇到的问题是我们在 pandas 中有很多历史 python 代码,这意味着所有内容都在内存中处理(基于 pandas dataframe)。
我们正在使用更多数据,不可能只在内存中处理,我们必须将历史代码从 pandas 重写为分布式数据框。我们正在考虑替代 python 解决方案,例如 Dask、PySpark (pyspark.pandas)、Polars 等
可以看到pyspark.pandas的用法(重写代码相对容易,最终输出接近原始pandas代码):
import pyspark.pandas as ps
# Create pandas DataFrame
technologies = ({
'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python","NA"],
'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000,1500],
'Duration':['30days','50days','55days','40days','60days','35days','30days','50days','40days'],
'Discount':[1000,2300,1000,1200,2500,None,1400,1600,0]
})
df = ps.DataFrame(technologies)
print(df)
# Use groupby() to compute the sum
df2 = df.groupby(['Courses']).sum()
print(df2)
您对替换 pandas 的建议是什么,pyspark.pandas 是否是最适合您的解决方案(如果我们的首要任务是最大限度地减少开发工作)?在使用 pyspark.pandas 时,您是否遇到过任何不兼容问题?
感谢分享您的经验。
BTW:看到很多样例here,官方文档见pyspark.pandas