回复:flink row 类型

classic Classic list List threaded Threaded
1 message Options
kcz
Reply | Threaded
Open this post in threaded view
|

回复:flink row 类型

kcz
哇 这个方式很取巧了 好机智  我之前就是一直索引取值 学习一下





------------------ 原始邮件 ------------------
发件人: Jark Wu <[hidden email]&gt;
发送时间: 2020年7月24日 12:39
收件人: user-zh <[hidden email]&gt;
主题: 回复:flink row 类型



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

Best,
Jark

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

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