大文本按行去重(2G 左右文件)有什么好的解决方案吗?

2020-11-10 14:44:19 +08:00
 sl19981007

速度可以稍慢一点,但也不能太慢(一两个小时跑不完那种 不使用 Spark 之类的计算引擎 麻烦大佬们给小弟个解决方案

4956 次点击
所在节点    程序员
36 条回复
janxin
2020-11-10 18:43:52 +08:00
这数据量直接 load 到内存里怎么玩都行
NCE
2020-11-10 19:54:15 +08:00
这应该是个面试题
winglight2016
2020-11-10 20:08:26 +08:00
@NCE 的确,我在金山面试 android 时有被问过类似问题
nowgoo
2020-11-10 20:47:44 +08:00
linux 环境 sort/awk,windows 环境 editplus/emeditor
rainfd
2020-11-10 21:37:16 +08:00
sort | unique
m30102
2020-11-10 23:11:25 +08:00
LinekdHashSet 行不?
Mohanson
2020-11-10 23:39:52 +08:00
任意"去重"或"排序"的面试题答"字典树"绝对得分的.
fewok
2020-11-11 00:20:34 +08:00
@loliordie o(n)复杂度 怕是搞不定吧
loliordie
2020-11-11 05:13:36 +08:00
@fewok 为何搞不定 不就是 n 次查哈希表的操作么?
mogami18
2020-11-11 06:06:52 +08:00
我還以為是 2T
oneoyn
2020-11-11 09:15:40 +08:00
2G 我的 cpu 可以秒开
fewok
2020-11-11 10:08:54 +08:00
@loliordie 建哈希表 或者查哈希表 就不算复杂度嘛?
newmlp
2020-11-11 10:43:22 +08:00
2g 而已,全部读到内存就完事了
vincent7245
2020-11-11 11:47:25 +08:00
所以你为什么不用 spark 呢 /狗头
loliordie
2020-11-11 12:44:50 +08:00
@fewok 你可能需要理解下 O(n)复杂度的意义, 大 O 计算法考察的是时间规模跟输入规模的关系, 哈希表复杂度为 O(1), 不会影响时间复杂度, 除非你使用了 listnode 这样的结构, 每次查询元素时都会迭代, 随着输入规模的增加查询时间也会增加这样才会导致复杂度从 O(n)变为 O(n^2)
hxy100
2020-11-11 20:57:52 +08:00
Linux 直接上 sort 或者 uniq 命令即可,Windows 下的话直接 Emeditor 打开,点一下去重按钮就完事。

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

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

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

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

© 2021 V2EX