Шторм Конфигурация Гусеничный с Тика для рекурсивных обходов

Вопрос задан: 2 года назад Последняя активность: 2 года назад
up 0 down

Я хочу, чтобы включить Тик парсера моей топологии. Я установил jsoup.treat.non.html.as.error как false в конфигурации, и я настроил топологию Тика, как описано в документации ливневой искателя.

Настройки топологии ползания следующим образом:

builder.setSpout("spout", new MemorySpout(testURLs));

builder.setBolt("partitioner", new URLPartitionerBolt()).shuffleGrouping("spout");

builder.setBolt("fetch", new FetcherBolt()).fieldsGrouping("partitioner", new Fields("key"));

builder.setBolt("sitemap", new SiteMapParserBolt()).localOrShuffleGrouping("fetch");

builder.setBolt("jsoup", new JSoupParserBolt()).localOrShuffleGrouping("sitemap");

builder.setBolt("shunt", new RedirectionBolt()).localOrShuffleGrouping("jsoup");

builder.setBolt("tika", new ParserBolt()).localOrShuffleGrouping("shunt", "tika");

builder.setBolt("indexer", new HBaseIndexerBolt(), numWorkers).localOrShuffleGrouping("shunt")
                    .localOrShuffleGrouping("tika");

builder.setBolt("status", new MemoryStatusUpdater()).localOrShuffleGrouping(Constants.StatusStreamName)
                    .localOrShuffleGrouping("sitemap", Constants.StatusStreamName)
                    .localOrShuffleGrouping("shunt", Constants.StatusStreamName)
                    .localOrShuffleGrouping("tika", Constants.StatusStreamName)
                    .localOrShuffleGrouping("indexer", Constants.StatusStreamName);

return submit("crawl", conf, builder);

С помощью этой топологии, я получил Invalid топологии исключение. Проблема, как представляется, вызваны болтом статуса. Потому что, когда я исключила болт состояния, моя ползать топология работает без каких-либо проблем. Как я должен настроить статус болт?

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 1 down accepted

Первое соединение отсутствует «fetch'and вы должны подключить„jsoup“не„шунт“, последние не выделяет внешние ссылки на поток статуса: он просто посылает кортежи, JSoup не может справиться с определенным потоком для Тика для использования. Видеть StatusStream вики для некоторого фона.

Определение ниже должно работать.

builder.setBolt("status", new MemoryStatusUpdater()).
    .localOrShuffleGrouping("fetch", Constants.StatusStreamName)
    .localOrShuffleGrouping("sitemap", Constants.StatusStreamName)
    .localOrShuffleGrouping("jsoup", Constants.StatusStreamName)
    .localOrShuffleGrouping("tika", Constants.StatusStreamName)
    .localOrShuffleGrouping("indexer", Constants.StatusStreamName);

Это при условии, что ваш HBaseIndexer расширяет AbstractIndexerBolt и посылает кортежи потока состояния.

Пожалуйста, обратите внимание, что MemoryStatusUpdater в основном для тестирования и отладки: это не обязательно будет работать, если у вас есть более чем один работник и потеряет свои данные, если топология, если рабочий процесс будет перезапущен.