假设我有一个巨大的CSV文件,无法加载到内存中。
我想从文件中随机抽取N
元素。
你建议如何做到这一点? 有没有一个哈斯克尔图书馆可以做到这一点? 是否可以在常量内存中执行此操作?
到目前为止,我在 http://hackage.haskell.org/package/random-extras-0.19/docs/Data-Random-Extras.html 中找到了sample
函数,但它需要在列表中加载。
你建议如何做到这一点?
一个流库,用于在常量内存中流式传输数据,采样功能用于选择元素并为您提供结果。
有没有一个哈斯克尔图书馆可以做到这一点?
题外话,但请参阅评论。
是否可以在常量内存中执行此操作?
是的,流式传输和采样是可能的。 更临时的解决方案是在文件中选择 N 个随机偏移量并从那里解析 csv。 它不会是统一的,但可能适用于现实世界的场景,同时也比 O(n( 更快。