问答 您好,这个问题我看有回复了,我用之前的版本当rowData为binaryRowData任务是没有报错的,这个现在转换过来的是genericRowData,请问这个是哪里设置的?可以讲讲大概的原理吗

您好,这个问题我看有回复了,我用之前的版本当rowData为binaryRowData任务是没有报错的,这个现在转换过来的是genericRowData,请问这个是哪里设置的?可以讲讲大概的原理吗

   匿名用户    发布于 2023-04-27 16:52 最新回复 2023-04-27 16:55  来自于   群内解答  490  5
5条回答
群内解答
回复于 2023-04-27 16:55

  debug一下serializer和copy方法,你就能看到是哪个Output实现调用的这些方法了  

0 0
群内解答
回复于 2023-04-27 16:55

  目前就了解到flink根据算否开启算子链有不同的Output实现,不同的Output实现的方式不同。要更深入的了解你得自己看下了

另外关于binaryRowData为什么可以,RowDataSerializer使用UNSFAE类的方法去做的序列化和反序列化,这里应该采用了小端法的方式,导致你的Long数据通过getInt也能正确反序列化出来
https://blog.csdn.net/u012861978/article/details/51906546

0 0
群内解答
回复于 2023-04-27 16:55

  我是说判断是否开启算子链以后,走序列化还是copy的逻辑

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user68/answer/7331b1c6b6c16e55cdd101748bf9d01f..png   

0 0
群内解答
回复于 2023-04-27 16:54

关于这个binaryrowdata,你可以看下 org.apache.flink.table.runtime.typeutils.RowDataSerializer这个类的方法的调用,如果关闭算子链会走serializer和deserializer的方法,否则走的是copy。
之前做更改是为了同步场景下的性能传输


  想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:

https://www.dtstack.com/?src=bbs


同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:

https://github.com/DTStack/chunjun  

0 0
群内解答
回复于 2023-04-27 16:53

  求大佬赐教之前这个更改的考虑,仅仅是为了提高传输性能?  

0 0
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群