处理比较大的数据集的时候,单机 spark 会比 pandas 更快吗

2022-04-03 01:05:50 +08:00
 MTMT

最近因为需求要处理几十到两百 G 的 CSV 文件,pandas 感觉跑得比较慢,而且貌似是单核?求问有什么好用一点的包吗,单机的 spark 可以吗胜任吗?内存大概近 500g

3638 次点击
所在节点    Python
11 条回复
ipwx
2022-04-03 01:26:48 +08:00
我很好奇你的 pandas 写法是啥样子的
nuistzhou
2022-04-03 02:27:56 +08:00
试试 Dask ?
MeePawn666
2022-04-03 02:49:12 +08:00
非分布式场景 spark 没多快吧。考虑到你内存大于数据集,是计算密集型的话多核 /线程确实会有帮助,可以考虑 mkl, openmp 之类的?话说 numpy 其实挺快的了,处理数据应该足够。
yech1990
2022-04-03 07:04:18 +08:00
这个数量级就得考虑 pandas 的增强版本了,类似 https://github.com/pola-rs/polars
SuperXX
2022-04-03 08:59:28 +08:00
我遇到过很多次 pandas 的速度问题,建议直接换 julia 语言,速度提升不是一点点 的
SuperXX
2022-04-03 09:03:28 +08:00
512357301
2022-04-03 12:02:45 +08:00
试试 clickhouse
INCerry
2022-04-03 15:32:36 +08:00
其实单机 spark 还不如你写个 for 循环来得快
MTMT
2022-04-03 16:59:51 +08:00
@nuistzhou @512357301 感谢推荐,目前正在尝试这一类的包

@SuperXX 感谢推荐,之前不太了解,看来值得学习一下

@yech1990 感谢推荐,看 benchmark 感觉 polars 真是太强了

@MeePawn666 @INCerry 感谢解答,不太了解 spark ,所以不知道单机版什么情况,想着单机版会不会利用多进程,这样可能比单核还是快一些
ohayoo
2022-04-13 17:48:02 +08:00
@yech1990 请问下大佬,pandas 读大文件的时候有 chunksize 参数,如
with pd.read_csv(file, chunksize=50000) as reader:
然后 for 循环这个 reader

想请问下 polars 的类似 chunksize 要怎么设置?看官方文档一直就没看懂,不设置的话 读大文件就报内存分配失败
yech1990
2022-04-15 21:07:33 +08:00
@ohayoo batch_size?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX