Pandas Pyspark、dask或任何其他python:如何在不损坏笔记本电脑的情况下旋转一张大桌子?

Pandas Pyspark、dask或任何其他python:如何在不损坏笔记本电脑的情况下旋转一张大桌子?,pandas,pyspark,dask,Pandas,Pyspark,Dask,我可以使用pandas、dask或pyspark很好地透视较小的数据集 然而,当数据集超过200万行时,我的笔记本电脑就会崩溃。最终的数据透视表将有1000列和大约150万行。我怀疑在进入pivot表的过程中,一定有一些巨大的RAM使用量超过了系统内存,我不知道pyspark或dask是如何使用的,如果中间步骤不能始终在RAM中使用,那么它们是有用的 我认为dask和pyspark即使只有8gb的ram,也会允许使用比ram更大的数据集。我还认为这些库将为我分块数据,并且永远不会超过我可用的ra

我可以使用pandas、dask或pyspark很好地透视较小的数据集

然而,当数据集超过200万行时,我的笔记本电脑就会崩溃。最终的数据透视表将有1000列和大约150万行。我怀疑在进入pivot表的过程中,一定有一些巨大的RAM使用量超过了系统内存,我不知道pyspark或dask是如何使用的,如果中间步骤不能始终在RAM中使用,那么它们是有用的

我认为dask和pyspark即使只有8gb的ram,也会允许使用比ram更大的数据集。我还认为这些库将为我分块数据,并且永远不会超过我可用的ram数量。我意识到我可以在非常小的数据块中读取巨大的数据集,然后对数据块进行透视,然后立即手动将透视结果写入拼花地板或hdf5文件。这决不能超过ram。但是,这样的手工工作难道不会挫败所有这些库的目的吗?我的印象是,我所描述的内容肯定包含在这些库的开箱即用中,还是我错了

如果我有一个3亿行的100gb文件,并且想用笔记本电脑来处理这个问题,这甚至是可能的(如果需要的话,我可以等几个小时)

有人能帮忙吗?我会继续为这件事增加一笔赏金

简单地请告诉我如何采取一个大拼花文件,本身是太大的ram;将数据透视到一个对ram来说太大的表中,永远不要超过可用ram(比如8gb)

#df is a pyspark dataframe
df_pivot = df.groupby(df.id).pivot("city").agg(count(cd.visit_id))

关于Spark:您是否尝试过?最好从
spark.default.parallelism
和/或数据帧的分区数开始。此外,您是否设置了Spark的内存(默认为1GB)?您是否使用内置的pivot
函数或一些自定义项?对于崩溃的dask和pyspark代码版本,也许您应该包含您尝试过的代码,以便人们可以指出可能更好的方法。