我无法理解在Apache Storm中使用Tuple.getStringByField(“ABC”)。
以下是代码:
Public Void execute(Tuple input){
try{
if (input.getSourceStreamId.equals("signals"))
{
str=input.getStringByField("action")
if ("refresh".equals(str))
{....}
}
}...
这里的 input.getStringByField(“action”)正是这样做的。
谢谢。
答案 0 :(得分:3)
在风暴中,喷口和螺栓都会发出元组。但问题是每个元组中包含的内容。每个spout和bolt都可以使用以下方法来定义元组模式。
@Override
public void declareOutputFields(
OutputFieldsDeclarer outputFieldsDeclarer)
{
// tell storm the schema of the output tuple
// tuple consists of columns called 'mycolumn1' and 'mycolumn2'
outputFieldsDeclarer.declare(new Fields("mycolumn1", "mycolumn2"));
}
随后的螺栓可以使用getStringByField("mycolumn1")
根据列名检索值。
答案 1 :(得分:1)
getStringByField()
与getString()
类似,不同之处在于它按字段名称而不是位置查找字段。