1、分词工具是IKAnalyzer

它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。

2、UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

3、插入数据库错误:Data truncation: Data too long for column 'title' at row 1

原因:使用varchar类型 导致长度不够。方法:改为longtext类型。

4、 bulkRequest.execute().actionGet();程序后面执行不了。

方法:重启一下ES

5、问题一 spout是怎么将tuple传过去的?

Bolt从Topology中获取数据,并进行处理declarer.declare(new Fields("word")); 

它声明了该Bolt的输出字段,只有一个,而且这个Fields的名字很重要,是供下游使用的,比如这里叫word,那么在fieldsGrouping也应该通过word来指定这个结果。

//因为word-counter有两个并行任务,从word-normalizer的数据发给 哪个任务是通过filed中的参数来确定的。

builder.setBolt("word-counter", new WordCounter(),2).fieldsGrouping("word-normalizer", new Fields("word"));

2、问题二

在IRichBolt实现类中, 如果OutputCollector.emit(oldTuple, newTuple)这样调用来发射tuple(在storm中称之为anchoring), 那么后面的bolt的ack/fail会影响spout的ack/fail, 如果collector.emit(newTuple)这样来发射tuple(在storm称之为unanchoring), 则相当于断开了后面bolt的ack/fail对spout的影响.spout将立即根据当前bolt前面的ack/fail的情况来决定调用spout的ack/fail. 所以某个bolt后面的bolt的成功失败对你来说不关心, 你可以直接通过这种方式来忽略