久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么用Storm IPResolutionBolt寫爬蟲

160次閱讀
沒有評論

共計 2222 個字符,預計需要花費 6 分鐘才能閱讀完成。

本篇內容介紹了“怎么用 Storm IPResolutionBolt 寫爬蟲”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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 String, String[]  metadata = null;

if (tuple.contains( metadata)) metadata = (HashMap String, String[] ) tuple .getValueByField( metadata  // 這里的 Metadata 是一個 HashMap,持有的是一個   String,String[]   的對象組合 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 寫爬蟲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2222字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 都昌县| 陵川县| 龙州县| 绵竹市| 阿瓦提县| 深州市| 香港| 文水县| 吉木萨尔县| 柳州市| 交城县| 衡阳县| 高清| 疏勒县| 海盐县| 宕昌县| 合肥市| 南皮县| 噶尔县| 潞城市| 方正县| 咸宁市| 威远县| 兴和县| 永泰县| 青田县| 荆门市| 分宜县| 榆树市| 连南| 大宁县| 曲麻莱县| 班玛县| 文昌市| 扎兰屯市| 区。| 苏州市| 内丘县| 德庆县| 延庆县| 建阳市|