创建具有可选字段的元组(flink java)

wgeznvg7  于 2021-06-26  发布在  Flink
关注(0)|答案(1)|浏览(414)

我想存储一个与 Tuple2<String, String> 钥匙。
为此,我尝试创建一个 class MyKey extends Tuple3<String, String, String> 第三个字段是可选的。它可以为null,在检查是否相等时不使用。
然后我重写了equals()和hashcode()方法:

  1. class MyKey extends Tuple3<String, String, String> {
  2. @Override
  3. public boolean equals(Object o) {
  4. if (this == o) {
  5. return true;
  6. }
  7. if (!(o instanceof myKey)) {
  8. return false;
  9. }
  10. MyKey tuple = (MyKey) o;
  11. if (f0 != null ? !f0.equals(tuple.f0) : tuple.f0 != null) {
  12. return false;
  13. }
  14. if (f1 != null ? !f1.equals(tuple.f1) : tuple.f1 != null) {
  15. return false;
  16. }
  17. return true;
  18. }
  19. @Override
  20. public int hashCode() {
  21. int result = f0 != null ? f0.hashCode() : 0;
  22. result = 31 * result + (f1 != null ? f1.hashCode() : 0);
  23. return result;
  24. }
  25. }

这种方法有什么我应该注意的地方吗?
我可以考虑其他的解决方案吗?

cnjp1d6j

cnjp1d6j1#

您应该知道flink在rocksdb state后端使用的元组序列化程序无法序列化具有空字段的记录。我得说那是个问题。

相关问题