有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java推特风暴,为什么螺栓没有收到喷嘴发出的信息

我在一个项目中使用Twitter风暴,我有一个奇怪的问题。 我有一个带有以下下一个代码的喷口:

public void nextTuple()
{
    HashMap cluster = this.databaseManager.getCluster();
    System.out.println("emitted: " + cluster);
    this.collector.emit(new Values(cluster));
}

以及一个螺栓,该螺栓通过以下方式连接到该喷嘴:

public void execute(Tuple tuple)
{
    HashMap<String, List<String>> unigrams = (HashMap)tuple.getValueByField("unigrams");
    System.out.println("received: " + unigrams);
}

发出的内容应与收到的内容相同,对吗? 因此,首先输出显示:

emitted: {218460=[04ef110987074dc6b3e3174b9f57d980], 1702472=[04ef110987074dc6b3e3174b9f57d980]}
received: {218460=[04ef110987074dc6b3e3174b9f57d980], 1702472=[04ef110987074dc6b3e3174b9f57d980]}

(这与数据的含义无关,关键是它被发射和接收)。 但是,当发射的信号发生变化时,接收的信号是相同的:

emitted: {13788873=[aa2ec732b5b64b25be81abe79d2176bb], 2293158=[aa2ec732b5b64b25be81abe79d2176bb], 218460=[04ef110987074dc6b3e3174b9f57d980], 1702472=[04ef110987074dc6b3e3174b9f57d980]}
received: {218460=[04ef110987074dc6b3e3174b9f57d980], 1702472=[04ef110987074dc6b3e3174b9f57d980]}

我正在追问为什么在第二种情况下它不起作用。 此外,从nextTuple打印的输出比从execute打印的要多得多

你知道为什么吗


共 (1) 个答案

  1. # 1 楼答案

    我找到的唯一解决方案是在发送之前将HashMap转换为字符串,然后在bolt中将其转换回HashMap