flink row 类型

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

flink row 类型

Dream-底限
hi、
我这面定义row数据,类型为ROW<rule_key STRING>,可以通过
row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口

rule_key  转换为rule_key1,rulekey2
1
2
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Benchao Li-2
这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。
你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。

Dream-底限 <[hidden email]> 于2020年7月22日周三 下午7:22写道:

> hi、
> 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过
> row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口
>
> rule_key  转换为rule_key1,rulekey2
> 1
> 2
>


--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Dream-底限
hi
是的,我们的数据场景比较尴尬,那我想其他方式实现一下

Benchao Li <[hidden email]> 于2020年7月23日周四 下午12:55写道:

> 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。
> 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。
>
> Dream-底限 <[hidden email]> 于2020年7月22日周三 下午7:22写道:
>
> > hi、
> > 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过
> > row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口
> >
> > rule_key  转换为rule_key1,rulekey2
> > 1
> > 2
> >
>
>
> --
>
> Best,
> Benchao Li
>
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Jingsong Li
可以看下Flink 1.11的UDF type inference.

在TypeInference中有input的type,这个type应该是包含字段信息的。

Best,
Jingsong

On Thu, Jul 23, 2020 at 2:09 PM Dream-底限 <[hidden email]> wrote:

> hi
> 是的,我们的数据场景比较尴尬,那我想其他方式实现一下
>
> Benchao Li <[hidden email]> 于2020年7月23日周四 下午12:55写道:
>
> > 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。
> > 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。
> >
> > Dream-底限 <[hidden email]> 于2020年7月22日周三 下午7:22写道:
> >
> > > hi、
> > > 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过
> > > row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口
> > >
> > > rule_key  转换为rule_key1,rulekey2
> > > 1
> > > 2
> > >
> >
> >
> > --
> >
> > Best,
> > Benchao Li
> >
>


--
Best, Jingsong Lee
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

xiao cai
In reply to this post by Dream-底限
可以考虑把字段索引值保存下来再获取


 原始邮件
发件人: Dream-底限<[hidden email]>
收件人: user-zh<[hidden email]>
发送时间: 2020年7月23日(周四) 14:08
主题: Re: flink row 类型


hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <[hidden email]> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。 > 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 <[hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > > 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > > row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > > rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, > Benchao Li >
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Dream-底限
hi、Jingsong Li
我查看了对应的api,并运行了demo测试,通过CallContext我可以拿到对应的字段类型,但是无法拿到对应的字段名称

>>在TypeInference中有input的type,这个type应该是包含字段信息的。

xiao cai <[hidden email]> 于2020年7月23日周四 下午2:19写道:

> 可以考虑把字段索引值保存下来再获取
>
>
>  原始邮件
> 发件人: Dream-底限<[hidden email]>
> 收件人: user-zh<[hidden email]>
> 发送时间: 2020年7月23日(周四) 14:08
> 主题: Re: flink row 类型
>
>
> hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <[hidden email]>
> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。 >
> 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 <
> [hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > >
> 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > >
> row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > >
> rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, > Benchao
> Li >
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Dream-底限
hi、xiao cai

可以说一下思路吗,我没太懂
》》可以考虑把字段索引值保存下来再获取

Dream-底限 <[hidden email]> 于2020年7月23日周四 下午2:56写道:

> hi、Jingsong Li
> 我查看了对应的api,并运行了demo测试,通过CallContext我可以拿到对应的字段类型,但是无法拿到对应的字段名称
>
> >>在TypeInference中有input的type,这个type应该是包含字段信息的。
>
> xiao cai <[hidden email]> 于2020年7月23日周四 下午2:19写道:
>
>> 可以考虑把字段索引值保存下来再获取
>>
>>
>>  原始邮件
>> 发件人: Dream-底限<[hidden email]>
>> 收件人: user-zh<[hidden email]>
>> 发送时间: 2020年7月23日(周四) 14:08
>> 主题: Re: flink row 类型
>>
>>
>> hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <[hidden email]>
>> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。 >
>> 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 <
>> [hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > >
>> 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > >
>> row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > >
>> rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, > Benchao
>> Li >
>
>
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

xiao cai
In reply to this post by Dream-底限
Hi ,Dream


比如你最终拿到的是Row(10),10表示有10个字段,这些字段的顺序是固定的,那么你可以把每个字段在row里的索引的映射关系保存下来,如下 map<fieldName, fieldIndex> ,然后 row.getField(map.get(fieldName))获取你需要的值


 原始邮件
发件人: Dream-底限<[hidden email]>
收件人: user-zh<[hidden email]>
发送时间: 2020年7月23日(周四) 14:57
主题: Re: flink row 类型


hi、xiao cai 可以说一下思路吗,我没太懂 》》可以考虑把字段索引值保存下来再获取 Dream-底限 <[hidden email]> 于2020年7月23日周四 下午2:56写道: > hi、Jingsong Li > 我查看了对应的api,并运行了demo测试,通过CallContext我可以拿到对应的字段类型,但是无法拿到对应的字段名称 > > >>在TypeInference中有input的type,这个type应该是包含字段信息的。 > > xiao cai <[hidden email]> 于2020年7月23日周四 下午2:19写道: > >> 可以考虑把字段索引值保存下来再获取 >> >> >> 原始邮件 >> 发件人: Dream-底限<[hidden email]> >> 收件人: user-zh<[hidden email]> >> 发送时间: 2020年7月23日(周四) 14:08 >> 主题: Re: flink row 类型 >> >> >> hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <[hidden email]> >> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL plan过程的东西,在运行时它就没有什么实际意义了。 > >> 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 < >> [hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > > >> 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > > >> row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > > >> rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, > Benchao >> Li > > >
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Dream-底限
hi xiao cai
我懂你的意思了,这确实是一种解决方式,不过这种方式有一个弊端就是每个这种功能都要开发对应的方法,我还是比较倾向于一个方法适用于一类场景,如果做不到只能每次有需求都重新开发了

xiao cai <[hidden email]> 于2020年7月23日周四 下午3:40写道:

> Hi ,Dream
>
>
> 比如你最终拿到的是Row(10),10表示有10个字段,这些字段的顺序是固定的,那么你可以把每个字段在row里的索引的映射关系保存下来,如下
> map<fieldName, fieldIndex> ,然后 row.getField(map.get(fieldName))获取你需要的值
>
>
>  原始邮件
> 发件人: Dream-底限<[hidden email]>
> 收件人: user-zh<[hidden email]>
> 发送时间: 2020年7月23日(周四) 14:57
> 主题: Re: flink row 类型
>
>
> hi、xiao cai 可以说一下思路吗,我没太懂 》》可以考虑把字段索引值保存下来再获取 Dream-底限 <
> [hidden email]> 于2020年7月23日周四 下午2:56写道: > hi、Jingsong Li >
> 我查看了对应的api,并运行了demo测试,通过CallContext我可以拿到对应的字段类型,但是无法拿到对应的字段名称 > >
> >>在TypeInference中有input的type,这个type应该是包含字段信息的。 > > xiao cai <
> [hidden email]> 于2020年7月23日周四 下午2:19写道: > >> 可以考虑把字段索引值保存下来再获取 >> >> >>
> 原始邮件 >> 发件人: Dream-底限<[hidden email]> >> 收件人: user-zh<
> [hidden email]> >> 发送时间: 2020年7月23日(周四) 14:08 >> 主题: Re: flink
> row 类型 >> >> >> hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <
> [hidden email]> >> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL
> plan过程的东西,在运行时它就没有什么实际意义了。 > >>
> 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 < >>
> [hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > > >>
> 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > > >>
> row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > > >>
> rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, > Benchao
> >> Li > > >
Reply | Threaded
Open this post in threaded view
|

Re: flink row 类型

Jark
Administrator
你可以看看是不是可以把这个字段声明成 MAP,这样就可以 map['rule_key1'] 的方式通过字段名去获取了。

Best,
Jark

On Thu, 23 Jul 2020 at 15:47, Dream-底限 <[hidden email]> wrote:

> hi xiao cai
>
> 我懂你的意思了,这确实是一种解决方式,不过这种方式有一个弊端就是每个这种功能都要开发对应的方法,我还是比较倾向于一个方法适用于一类场景,如果做不到只能每次有需求都重新开发了
>
> xiao cai <[hidden email]> 于2020年7月23日周四 下午3:40写道:
>
> > Hi ,Dream
> >
> >
> > 比如你最终拿到的是Row(10),10表示有10个字段,这些字段的顺序是固定的,那么你可以把每个字段在row里的索引的映射关系保存下来,如下
> > map<fieldName, fieldIndex> ,然后 row.getField(map.get(fieldName))获取你需要的值
> >
> >
> >  原始邮件
> > 发件人: Dream-底限<[hidden email]>
> > 收件人: user-zh<[hidden email]>
> > 发送时间: 2020年7月23日(周四) 14:57
> > 主题: Re: flink row 类型
> >
> >
> > hi、xiao cai 可以说一下思路吗,我没太懂 》》可以考虑把字段索引值保存下来再获取 Dream-底限 <
> > [hidden email]> 于2020年7月23日周四 下午2:56写道: > hi、Jingsong Li >
> > 我查看了对应的api,并运行了demo测试,通过CallContext我可以拿到对应的字段类型,但是无法拿到对应的字段名称 > >
> > >>在TypeInference中有input的type,这个type应该是包含字段信息的。 > > xiao cai <
> > [hidden email]> 于2020年7月23日周四 下午2:19写道: > >> 可以考虑把字段索引值保存下来再获取 >> >> >>
> > 原始邮件 >> 发件人: Dream-底限<[hidden email]> >> 收件人: user-zh<
> > [hidden email]> >> 发送时间: 2020年7月23日(周四) 14:08 >> 主题: Re: flink
> > row 类型 >> >> >> hi 是的,我们的数据场景比较尴尬,那我想其他方式实现一下 Benchao Li <
> > [hidden email]> >> 于2020年7月23日周四 下午12:55写道: > 这个应该是做不到的。name只是SQL
> > plan过程的东西,在运行时它就没有什么实际意义了。 > >>
> > 你是想在udf里面获取row里面每个字段的名字是吧?如果是的话,我理解现在应该是做不到的。 > > Dream-底限 < >>
> > [hidden email]> 于2020年7月22日周三 下午7:22写道: > > > hi、 > > >>
> > 我这面定义row数据,类型为ROW<rule_key STRING>,可以通过 > > >>
> > row.getField(i)获取到对应的值,但是我想获取对应的row_name名称要怎么操作,貌似没有报漏获取名称的接口 > > > > >>
> > rule_key 转换为rule_key1,rulekey2 > > 1 > > 2 > > > > > -- > > Best, >
> Benchao
> > >> Li > > >
>