风暴tuple.getIntegerByField无法按预期工作

时间:2018-08-05 09:50:39

标签: apache-storm

我有一个包含以下数据的元组 第一列是AppRegistry.registerComponent('someappname', () => App)

"affectedAccount"

我跑步时

 source: source-spout:12, stream: default, id: {}, [1, 11455455, 1288, 20180717, 000808, 1, 6, 1, d, 1, Y, 1.250000, 6, , , , , , , ]

它抛出tuple.getIntegerByField("affectedAccount"); 当我跑步时

ClassCastException

它可以正常工作,即使值是Integer也为什么不起作用

1 个答案:

答案 0 :(得分:0)

我的猜测是第一列的类型实际上不是Integer,而是String。看一下Tuple.getIntegerByField https://github.com/apache/storm/blob/efb2e9a337f9320efd7e5873e493532aa58f341c/storm-client/src/jvm/org/apache/storm/tuple/TupleImpl.java#L174的实现。

this.affectedAccount = Integer.parseInt(tuple.getStringByField("affectedAccount"));起作用的原因是该字段实际上是String类型。