我从社交网络中抓取了数百万的用户关系数据。此类数据以以下格式存储:
- A B
- A C
- AE
- BF
- B A
- BD
- CF
- 你好
- DP
- E X
- 嗯 ...
但是,我不需要所有这些数据。我只关心一些特殊用户(验证用户),比如A、B和C。
我的问题是如何才能仅从这些海量数据中检索经过验证的用户的用户关系数据。我正在编写一个程序来这样做,但我发现它需要很长时间才能完成,因为数据的大小(大约 8GB)。如果我将这些数据存储到 SQL 数据库中并使用一些级联删除规则,它会更快吗?你们有什么建议吗?非常感谢。
顺便说一句,用户关系数据存储在180个文本文件中。每个文件包含 100 万个上述形式的关系。
最佳答案
如果您的数据已经卡在文本文件中,并且您只需要在我使用 awk 时将其删除,那么对于这类事情,它是您所能获得的最轻量级的。像这样的东西:
awk '{ if( FNR != NR ) { if( 用户 $1 || 用户 $2) { print } } else { users[$0] = $0} }' list_of_users relations.txt
其中 list_of_users 是您想要的用户列表,每行一个。我们将它们存储在一个数组中,然后遍历关系并打印包含这些用户的关系。
关于java - 从海量文件中检索用户关系数据,尝试级联删除规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929905/