You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by zilong xiao <ac...@gmail.com> on 2023/03/13 08:20:44 UTC

Re: GenericRowData与BinaryRowData的转换

hi, benchao, 想问下有什么办法可以将BinaryRowData转成GenericRowData吗?我们业务场景需要对RowData
toString,BinaryRowData没有实现该方法QQAQ

Benchao Li <li...@apache.org> 于2021年4月9日周五 10:42写道:

> GenericRowData和BinaryRowData都是RowData这个接口的具体实现。
> 所以你只需要针对RowData进行编程即可,不能假设它使用哪个具体实现。
>
> 关于你的问题,在算子之间数据计算和转换的时候,会有很多地方构造出来BinaryRowData,
> 比如典型的就是序列化的时候都会按照BinaryRowData来序列化。
>
> Luna Wong <gf...@gmail.com> 于2021年4月8日周四 下午7:36写道:
>
> > 我看Kafka Connector源码生成的是GenericRowData,到Jdbc
> > Sink类型编程BinaryRowData了。Runtime层把GenericRowData转换BinaryRowData的规则是什么?
> >
>
>
> --
>
> Best,
> Benchao Li
>

Re: GenericRowData与BinaryRowData的转换

Posted by Shammon FY <zj...@gmail.com>.
Hi

你可以考虑将field数据从BinaryRowData中读取出来再转换成string试试

Best,
Shammon.FY

On Mon, Mar 13, 2023 at 4:21 PM zilong xiao <ac...@gmail.com> wrote:

> hi, benchao, 想问下有什么办法可以将BinaryRowData转成GenericRowData吗?我们业务场景需要对RowData
> toString,BinaryRowData没有实现该方法QQAQ
>
> Benchao Li <li...@apache.org> 于2021年4月9日周五 10:42写道:
>
> > GenericRowData和BinaryRowData都是RowData这个接口的具体实现。
> > 所以你只需要针对RowData进行编程即可,不能假设它使用哪个具体实现。
> >
> > 关于你的问题,在算子之间数据计算和转换的时候,会有很多地方构造出来BinaryRowData,
> > 比如典型的就是序列化的时候都会按照BinaryRowData来序列化。
> >
> > Luna Wong <gf...@gmail.com> 于2021年4月8日周四 下午7:36写道:
> >
> > > 我看Kafka Connector源码生成的是GenericRowData,到Jdbc
> > > Sink类型编程BinaryRowData了。Runtime层把GenericRowData转换BinaryRowData的规则是什么?
> > >
> >
> >
> > --
> >
> > Best,
> > Benchao Li
> >
>

Re: GenericRowData与BinaryRowData的转换

Posted by Benchao Li <li...@apache.org>.
Hi zilong,

应该是没有内置的方法直接进行转换的,如果有需要,还是需要自己根据schema做一遍读取和写入。

另外,在FLINK-24403[1] 中加强了对于复杂类型的print能力,可以直接把他们cast成string来打印。

[1] https://issues.apache.org/jira/browse/FLINK-24403

zilong xiao <ac...@gmail.com> 于2023年3月13日周一 16:22写道:

> hi, benchao, 想问下有什么办法可以将BinaryRowData转成GenericRowData吗?我们业务场景需要对RowData
> toString,BinaryRowData没有实现该方法QQAQ
>
> Benchao Li <li...@apache.org> 于2021年4月9日周五 10:42写道:
>
> > GenericRowData和BinaryRowData都是RowData这个接口的具体实现。
> > 所以你只需要针对RowData进行编程即可,不能假设它使用哪个具体实现。
> >
> > 关于你的问题,在算子之间数据计算和转换的时候,会有很多地方构造出来BinaryRowData,
> > 比如典型的就是序列化的时候都会按照BinaryRowData来序列化。
> >
> > Luna Wong <gf...@gmail.com> 于2021年4月8日周四 下午7:36写道:
> >
> > > 我看Kafka Connector源码生成的是GenericRowData,到Jdbc
> > > Sink类型编程BinaryRowData了。Runtime层把GenericRowData转换BinaryRowData的规则是什么?
> > >
> >
> >
> > --
> >
> > Best,
> > Benchao Li
> >
>


-- 

Best,
Benchao Li