Flink State 增加字段后 state 还能识别吗?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink State 增加字段后 state 还能识别吗?

wanglei2@geekplus.com.cn

写了个简单的类会在 Flink State 中使用:

public class OrderState {
    private Integer warehouseId;
    private String orderNo;
    private String ownerCode;
    private Long inputDate;
    private int orderType;
    private int amount = 0;
    private int status = 0;
.............
}


现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
也就是 flink run -s   savepointdir   后能正常识别旧的代码保存的 state 吗?

谢谢,
王磊



[hidden email]
Reply | Threaded
Open this post in threaded view
|

回复:Flink State 增加字段后 state 还能识别吗?

Yichao Yang
Hi


可以使用flink类型系统判断下OrderState是什么类型,我理解如果是pojo的话,恢复savepoint应该是正常恢复,反序列化应该是不会报错的。

Best,
Yichao Yang




------------------ 原始邮件 ------------------
发件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月9日(星期二) 晚上6:03
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Flink State 增加字段后 state 还能识别吗?




写了个简单的类会在 Flink State 中使用:

public class OrderState {
&nbsp;&nbsp;&nbsp; private Integer warehouseId;
&nbsp;&nbsp;&nbsp; private String orderNo;
&nbsp;&nbsp;&nbsp; private String ownerCode;
&nbsp;&nbsp;&nbsp; private Long inputDate;
&nbsp;&nbsp;&nbsp; private int orderType;
&nbsp;&nbsp;&nbsp; private int amount = 0;
&nbsp;&nbsp;&nbsp; private int status = 0;
.............
}


现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
也就是 flink run -s&nbsp;&nbsp; savepointdir&nbsp;&nbsp; 后能正常识别旧的代码保存的 state 吗?

谢谢,
王磊



[hidden email]
Reply | Threaded
Open this post in threaded view
|

回复: 回复:Flink State 增加字段后 state 还能识别吗?

wanglei2@geekplus.com.cn

OrderState 是我自己写的一个类。
几个成员变量和对应的 get set 方法。

怎么使用 flink 类型系统判断下OrderState是什么类型呢?



[hidden email]

发件人: 1048262223
发送时间: 2020-06-09 18:11
收件人: user-zh
主题: 回复:Flink State 增加字段后 state 还能识别吗?
Hi
 
 
可以使用flink类型系统判断下OrderState是什么类型,我理解如果是pojo的话,恢复savepoint应该是正常恢复,反序列化应该是不会报错的。
 
Best,
Yichao Yang
 
 
 
 
------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月9日(星期二) 晚上6:03
收件人:&nbsp;"user-zh"<[hidden email]&gt;;
 
主题:&nbsp;Flink State 增加字段后 state 还能识别吗?
 
 
 
 
写了个简单的类会在 Flink State 中使用:
 
public class OrderState {
&nbsp;&nbsp;&nbsp; private Integer warehouseId;
&nbsp;&nbsp;&nbsp; private String orderNo;
&nbsp;&nbsp;&nbsp; private String ownerCode;
&nbsp;&nbsp;&nbsp; private Long inputDate;
&nbsp;&nbsp;&nbsp; private int orderType;
&nbsp;&nbsp;&nbsp; private int amount = 0;
&nbsp;&nbsp;&nbsp; private int status = 0;
.............
}
 
 
现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
也就是 flink run -s&nbsp;&nbsp; savepointdir&nbsp;&nbsp; 后能正常识别旧的代码保存的 state 吗?
 
谢谢,
王磊
 
 
 
[hidden email]
Reply | Threaded
Open this post in threaded view
|

回复: 回复:Flink State 增加字段后 state 还能识别吗?

Yichao Yang
Hi


使用这个TypeInformation a = TypeInformation.of(OrderState.class);查看是不是pojo,我个人理解pojo应该是可以恢复的,你也可以自己尝试下。


Best,
Yichao Yang





------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月9日(星期二) 晚上6:22
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;回复: 回复:Flink State 增加字段后 state 还能识别吗?




OrderState 是我自己写的一个类。
几个成员变量和对应的 get set 方法。

怎么使用 flink 类型系统判断下OrderState是什么类型呢?



[hidden email]

发件人: 1048262223
发送时间: 2020-06-09 18:11
收件人: user-zh
主题: 回复:Flink State 增加字段后 state 还能识别吗?
Hi
&nbsp;
&nbsp;
可以使用flink类型系统判断下OrderState是什么类型,我理解如果是pojo的话,恢复savepoint应该是正常恢复,反序列化应该是不会报错的。
&nbsp;
Best,
Yichao Yang
&nbsp;
&nbsp;
&nbsp;
&nbsp;
------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
发件人:&amp;nbsp;"[hidden email]"<[hidden email]&amp;gt;;
发送时间:&amp;nbsp;2020年6月9日(星期二) 晚上6:03
收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&nbsp;
主题:&amp;nbsp;Flink State 增加字段后 state 还能识别吗?
&nbsp;
&nbsp;
&nbsp;
&nbsp;
写了个简单的类会在 Flink State 中使用:
&nbsp;
public class OrderState {
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Integer warehouseId;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String orderNo;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String ownerCode;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Long inputDate;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int orderType;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int amount = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int status = 0;
.............
}
&nbsp;
&nbsp;
现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
也就是 flink run -s&amp;nbsp;&amp;nbsp; savepointdir&amp;nbsp;&amp;nbsp; 后能正常识别旧的代码保存的 state 吗?
&nbsp;
谢谢,
王磊
&nbsp;
&nbsp;
&nbsp;
[hidden email]
Reply | Threaded
Open this post in threaded view
|

回复:Flink State 增加字段后 state 还能识别吗?

Yichao Yang
In reply to this post by wanglei2@geekplus.com.cn
Hi


我在官网找到了文档或许可以解答,参考[1]


[1]https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/stream/state/schema_evolution.html#pojo-%E7%B1%BB%E5%9E%8B


Best,
Yichao Yang




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月9日(星期二) 晚上6:03
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Flink State 增加字段后 state 还能识别吗?




写了个简单的类会在 Flink State 中使用:

public class OrderState {
&nbsp;&nbsp;&nbsp; private Integer warehouseId;
&nbsp;&nbsp;&nbsp; private String orderNo;
&nbsp;&nbsp;&nbsp; private String ownerCode;
&nbsp;&nbsp;&nbsp; private Long inputDate;
&nbsp;&nbsp;&nbsp; private int orderType;
&nbsp;&nbsp;&nbsp; private int amount = 0;
&nbsp;&nbsp;&nbsp; private int status = 0;
.............
}


现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
也就是 flink run -s&nbsp;&nbsp; savepointdir&nbsp;&nbsp; 后能正常识别旧的代码保存的 state 吗?

谢谢,
王磊



[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Flink State 增加字段后 state 还能识别吗?

Congxian Qiu
Hi

Flink 支持 state 的 schema evolution 的,具体的文档可以参考 [1]

[1]
https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/stream/state/schema_evolution.html
Best,
Congxian


1048262223 <[hidden email]> 于2020年6月9日周二 下午6:30写道:

> Hi
>
>
> 我在官网找到了文档或许可以解答,参考[1]
>
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/stream/state/schema_evolution.html#pojo-%E7%B1%BB%E5%9E%8B
>
>
> Best,
> Yichao Yang
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月9日(星期二) 晚上6:03
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Flink State 增加字段后 state 还能识别吗?
>
>
>
>
> 写了个简单的类会在 Flink State 中使用:
>
> public class OrderState {
> &nbsp;&nbsp;&nbsp; private Integer warehouseId;
> &nbsp;&nbsp;&nbsp; private String orderNo;
> &nbsp;&nbsp;&nbsp; private String ownerCode;
> &nbsp;&nbsp;&nbsp; private Long inputDate;
> &nbsp;&nbsp;&nbsp; private int orderType;
> &nbsp;&nbsp;&nbsp; private int amount = 0;
> &nbsp;&nbsp;&nbsp; private int status = 0;
> .............
> }
>
>
> 现在程序要升级,这个类还要增加一个新的字段。从state 能正常恢复吗?
> 也就是 flink run -s&nbsp;&nbsp; savepointdir&nbsp;&nbsp; 后能正常识别旧的代码保存的 state
> 吗?
>
> 谢谢,
> 王磊
>
>
>
> [hidden email]