[英]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.