请教一下Flink,上面这个parse是自定义udf,table1只有一行数据,外层select了3次json_data,为什么会调用3次udtf呢?
Flink的Table API和SQL提供了多种自定义函数的接口,以抽象类的形式定义。目前UDF主要有以下几类:
在Flink中,对于JSON数据的操作,通常使用的是UDTF(用户自定义函数)来处理。在你的例子中,table1只有一行数据,外层select了3次json_data,为什么会调用3次udtf呢?可能的原因是,在Flink中,对于JSON数据的操作,通常需要使用UDTF进行多次处理,才能得到所需的结果。例如,可以使用UDTF来解析JSON数据,然后对解析出的数据进行进一步的处理,最后将处理后的数据返回给用户。在你的例子中,可能需要使用UDTF来解析JSON数据,然后再对解析出的数据进行3次处理,最后将处理后的数据返回给用户。
Flink的UDTF(User Defined Table-Generating Function)是一个可以生成多张表的函数。当你在SELECT语句中使用UDTF时,Flink会为每个生成的表调用一次UDTF。
在你的情况下,你在外层SELECT语句中选择了3次JSON_DATA,这意味着Flink会为每个选择的JSON_DATA生成一张表,所以它会调用UDTF三次。
这与你是否有数据无关,只要你在SELECT语句中选择了一个字段,Flink就会为每个选择的字段生成一张表,并调用UDTF。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。