Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何提高性能,爬取一段时间后节点增加速度变慢 #21

Open
Youarerare opened this issue Aug 11, 2020 · 6 comments
Open

Comments

@Youarerare
Copy link

如题,neo4j数据库中大概花了3个小时达到9w个节点,然后节点增加得就非常缓慢了,该如何优化呢?

速率曲线大概是这样
image

因为部署在阿里云主机上内存有限,用bloomfilter替代了代码中的set去重,并-s JOBDIR= 在磁盘上

@lixiang0
Copy link
Owner

set的方式去重是存在性能问题。
可以改成字典树,比如前缀树的方式。

@Youarerare
Copy link
Author

set的方式去重是存在性能问题。
可以改成字典树,比如前缀树的方式。

这个set对item_name去重可不可以直接去掉呢,因为 url那里已经去过一次重了,而url貌似正是'https://baike.baidu.com/item/'+item_name这种形式的

@Youarerare
Copy link
Author

还有对value的replace("/n",'') ,有些节点最后还留有一个空格去不掉,这样在neo4j看起来一样,但是按name找不到,因为name后面实际上还有个空格,换成strip() 比较好。

@lixiang0
Copy link
Owner

set的方式去重是存在性能问题。
可以改成字典树,比如前缀树的方式。

这个set对item_name去重可不可以直接去掉呢,因为 url那里已经去过一次重了,而url貌似正是'https://baike.baidu.com/item/'+item_name这种形式的

不可以的,因为有重名现象,所以必须使用完整的URL作为去重

@Youarerare
Copy link
Author

set的方式去重是存在性能问题。
可以改成字典树,比如前缀树的方式。

这个set对item_name去重可不可以直接去掉呢,因为 url那里已经去过一次重了,而url貌似正是'https://baike.baidu.com/item/'+item_name这种形式的

不可以的,因为有重名现象,所以必须使用完整的URL作为去重

scrapy好像默认使用 scrapy.dupefilter.RFPDupeFilter 对 url进行去重了呀,应该不需要再自己去重了吧

@lixiang0
Copy link
Owner

set的方式去重是存在性能问题。
可以改成字典树,比如前缀树的方式。

这个set对item_name去重可不可以直接去掉呢,因为 url那里已经去过一次重了,而url貌似正是'https://baike.baidu.com/item/'+item_name这种形式的

不可以的,因为有重名现象,所以必须使用完整的URL作为去重

scrapy好像默认使用 scrapy.dupefilter.RFPDupeFilter 对 url进行去重了呀,应该不需要再自己去重了吧

重名不是URL重复,而是item/1和item/2这样的重复,这两个item重名,但是ID不一样。所以单纯靠item或者url是不行的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants