繁体   English   中英

创建一个带有可选字段的元组(Flink Java)

[英]Create a tuple with an optional field (Flink Java)

我想存储一个与Tuple2<String, String>键关联的可选值。

为此,我尝试创建一个class MyKey extends Tuple3<String, String, String> ,第三个字段是可选的。 它可以是 null 并且在检查相等性时不使用。

然后我重写了 equals() 和 hashCode() 方法:

class MyKey extends Tuple3<String, String, String> {
    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof myKey)) {
            return false;
        }

        MyKey tuple = (MyKey) o;

        if (f0 != null ? !f0.equals(tuple.f0) : tuple.f0 != null) {
            return false;
        }
        if (f1 != null ? !f1.equals(tuple.f1) : tuple.f1 != null) {
            return false;
        }
        return true;

    }

    @Override
    public int hashCode() {
        int result = f0 != null ? f0.hashCode() : 0;
        result = 31 * result + (f1 != null ? f1.hashCode() : 0);
        return result;
    }
}
  • 这种方法有什么我应该注意的问题吗?
  • 还有其他我可以考虑的解决方案吗?

您应该知道,Flink 与 RocksDB state 后端一起使用的元组序列化器无法序列化具有 null 字段的记录。 我会说这是一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM