storm-class强制转换异常

lmyy7pcs  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(347)
int flag = Integer.parseInt((String) arg0.getValueByField(Constants.FLAG));

在这里,在Storm中 arg0.getValueByField(String) 返回对象类型。在这种情况下,它实际上是一个整数。但是为了在下一个bolt中得到这个值作为整数,我编写了上面的代码行。但它给了类强制转换一个例外。你能告诉我它有什么问题吗(铸造还是什么?)。之后我还试过这个:

int flag = Integer.parseInt(arg0.getValueByField(Constants.FLAG).toString());

但还是一样的例外。

vfhzx4xs

vfhzx4xs1#

如果返回的值 arg0.getValueByField(Constants.FLAG) 属于类型 Integer 你不能把它扔给别人 String 和你一样。
简单地使用强制转换 Integer :

int flag = (Integer)arg0.getValueByField(Constants.FLAG);
9o685dep

9o685dep2#

在元组中找到您正在接收的内容,然后更改逻辑以处理它。。。

public void execute(Tuple input) {

    Object obj = input.getValueByField(Constants.FLAG);
    int flag;
    if (obj instanceof Integer){
        //
        flag = (Integer) obj;
    }
    else if (obj instanceof String){
        flag = Integer.parseInt((String) obj);

    }
    else // you are receiving something else that is neither an integer or String
    {
        throw new RuntimeException("other class type : "+obj.getClass()
                                   +"\t toString(): "+obj.toString());
        // your should be able to see this exception on Storm UI

    }

    // do your thing

}

相关问题