我在Storm用户组中问了这个问题,还没有得到回复,所以我决定在这里问一下。我找到了代码,并且很多参考了taskIndex的计算方法,但是当我尝试使用以下内容时,我得到的结果与Storm拓扑结果不同。我也看过不止一个帖子,其他人报告的相同。
以下是问题:
您好,
我尝试使用下面的信息来生成哈希,对其进行修改,然后计算正确的消费目标任务索引,但没有成功。我已经在互联网上搜索了一个关于这种性质的手计算的例子,并且已经空了。我必须在手工计算中遗漏一些东西,所以我希望名单上有人可以帮助我。
我的字段分组如下:
.fieldsGrouping(EXAMPLE_BOLT, EXAMPLE_BOLT_STREAM, new Fields(TopologyConstants.EXAMPLE_FIELD_GROUPING_ID))
我的EXAMPLE_BOLT如下所示发出:
collector.emit(TopologyConstants.EXAMPLE_BOLT_STREAM, new Values(EXAMPLE_FIELD_GROUPING_ID_VALUE, EXAMPLE_DATA_INSTANCE));
我执行如下计算:
int numberOfConsumingTasks = x; Integer EXAMPLE_FIELD_GROUPING_ID_VALUE = y; ArrayList alist = new ArrayList(); alist.add(EXAMPLE_FIELD_GROUPING_ID_VALUE); int hashCode = Arrays.deepHashCode(alist.toArray()); int targetTaskIndex = Math.abs(hashCode) % numberOfConsumingTasks;
当我使用拓扑中的实际值时,此计算得到的targetTaskIndex值与Storm生成的值不匹配。 有人能告诉我我做错了什么吗? 谢谢,
奥布里