怎么用Storm IPResolutionBolt写爬虫
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"怎么用Storm IPResolutionBolt写爬虫"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2026年11月03日怎么用Storm IPResolutionBolt写爬虫
本篇内容介绍了"怎么用Storm IPResolutionBolt写爬虫"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
package com.digitalpebble.storm.crawler.bolt;import java.net.InetAddress;import java.net.MalformedURLException;import java.net.URL;import java.util.HashMap;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import backtype.storm.task.OutputCollector;import backtype.storm.task.TopologyContext;import backtype.storm.topology.OutputFieldsDeclarer;import backtype.storm.topology.base.BaseRichBolt;import backtype.storm.tuple.Fields;import backtype.storm.tuple.Tuple;import backtype.storm.tuple.Values;public class IPResolutionBolt extends BaseRichBolt { public static final Logger LOG = LoggerFactory .getLogger(IPResolutionBolt.class); OutputCollector _collector; @SuppressWarnings("unchecked") public void execute(Tuple tuple) { String url = tuple.getStringByField("url"); HashMap metadata = null; //在这里判断我们的tuple是否包含着Meradata if (tuple.contains("metadata")) metadata = (HashMap) tuple .getValueByField("metadata"); //这里的Metadata是一个HashMap,持有的是一个 的对象组合 String ip = null; String host = ""; URL u; try { u = new URL(url); host = u.getHost(); } catch (MalformedURLException e1) { LOG.warn("Invalid URL: " + url); // ack it so that it doesn't get replayed _collector.ack(tuple); return; } try { long start = System.currentTimeMillis(); final InetAddress addr = InetAddress.getByName(host); ip = addr.getHostAddress(); long end = System.currentTimeMillis(); LOG.info("IP for: " + host + " > " + ip + " in " + (end - start) + " msec"); //在这里我们发射 url,ip,metadata 并且针对tuple做一个Ack _collector.emit(tuple, new Values(url, ip, metadata)); _collector.ack(tuple); } catch (final Exception e) { LOG.warn("Unable to resolve IP for: " + host); _collector.fail(tuple); } } public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("url", "ip", "metadata")); } public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) { _collector = collector; }} 在这里我们需要关注, declareOutputFields在设定我们的Tuple records对象的时候,是传递的"url","ip","metadata", 而不是一个封装好的对象。
一旦我们传递的records的数量比较多。那么请宁务必将传递的值设置为对象。并且在接受方,getValues(0)的方式取得。
"怎么用Storm IPResolutionBolt写爬虫"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
爬虫
内容
更多
知识
实用
学有所成
接下来
有的是
困境
实际
情况
接受方
数量
文章
方式
时候
案例
编带
网站
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华服互联网科技怎么样
互联网科技行业发展
新华互联网科技学院
嘟嘟瓜互联网科技
宜安科技 互联网金融
重庆互联网医院沙龙医盟信息科技
武汉健翔互联网络科技有限公司
荆州市昕露互联网络科技有限公司
天津腾达互联网科技有限公司
燊美集互联网科技有限公司
深圳艾果互联网通讯科技
互联网科技创新的路径
互联网数据科技专业
互联网方面的科技前沿
深圳互联网科技的发展
深圳无忧互联网科技
杭州披云加互联网科技有限公司
恒生科技指数 中概互联网
科技发展第三阶段互联网时代
互联网 科技节活动 微视频大赛
科技互联网
互联网科技图片
深圳互联网络科技有限公司
现代科技和互联网有关系吗
福建科技产业互联网发展
健康食品互联网创新科技园项目
玉溪新华互联网科技好不好
高科技互联网套路
上海乐五互联网科技有限公司
科技互联网专业工作会议发言稿