在ES爬虫拓扑中,何处获取(url, [title, content])元组对接HdfsBolt?
关于ES爬虫Storm拓扑中元组来源的解答
嗨,针对你的问题,我来给你理清楚这个元组的来源:
在典型的ElasticSearch爬虫Storm拓扑里,你需要的(url, [title, content])元组,通常来自负责页面内容解析的自定义Bolt(一般会命名类似PageParserBolt),原因如下:
- 常规的爬虫拓扑流程是这样的:
- 首先由Spout组件(比如
UrlFetchSpout)抓取目标页面的原始响应内容; - 然后把原始内容发送给页面解析Bolt,这个Bolt会负责从HTML/响应文本里提取出URL、页面标题(title)、正文内容(content),并将这些数据封装成你需要的元组格式发射出去;
- 之后这个元组会被分流:一路发送到ElasticSearch Bolt做索引存储,另一路就可以发送到你提到的HDFS Bolt完成持久化。
- 首先由Spout组件(比如
额外补充几点:
- 这个解析Bolt一般是开发者根据目标网站的页面结构自定义实现的,会用到Jsoup、XPath这类解析工具来提取内容;
- 如果你的拓扑里使用了现成的爬虫框架集成组件,那找负责内容提取/解析的那个Bolt就对了,它就是元组的来源;
- 要注意确认这个Bolt发射的元组字段名称(比如是否明确包含
url、title、content这些键),这样后续的ES Bolt和HDFS Bolt才能正确读取对应的数据。
内容的提问来源于stack exchange,提问作者aigujin
相关产品推荐
相关产品推荐

