开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请教一下Flink,上面这个parse是自定义udf,为什么会调用3次udtf呢?

请教一下Flink,上面这个parse是自定义udf,table1只有一行数据,外层select了3次json_data,为什么会调用3次udtf呢?b389ae2c7385b7fdb82e5d7d05ea2937.png

展开
收起
真的很搞笑 2023-10-22 22:15:57 57 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink的Table API和SQL提供了多种自定义函数的接口,以抽象类的形式定义。目前UDF主要有以下几类:

    1. 标量函数(Scalar Functions):将输入的标量值转换成一个新的标量值。
    2. 表函数(Table Functions):将输入的表转换成一个新的表。
    3. 用户自定义函数(User-defined Functions):用户自定义的函数。

    在Flink中,对于JSON数据的操作,通常使用的是UDTF(用户自定义函数)来处理。在你的例子中,table1只有一行数据,外层select了3次json_data,为什么会调用3次udtf呢?可能的原因是,在Flink中,对于JSON数据的操作,通常需要使用UDTF进行多次处理,才能得到所需的结果。例如,可以使用UDTF来解析JSON数据,然后对解析出的数据进行进一步的处理,最后将处理后的数据返回给用户。在你的例子中,可能需要使用UDTF来解析JSON数据,然后再对解析出的数据进行3次处理,最后将处理后的数据返回给用户。

    2023-10-23 13:35:25
    赞同 展开评论 打赏
  • Flink的UDTF(User Defined Table-Generating Function)是一个可以生成多张表的函数。当你在SELECT语句中使用UDTF时,Flink会为每个生成的表调用一次UDTF。

    在你的情况下,你在外层SELECT语句中选择了3次JSON_DATA,这意味着Flink会为每个选择的JSON_DATA生成一张表,所以它会调用UDTF三次。

    这与你是否有数据无关,只要你在SELECT语句中选择了一个字段,Flink就会为每个选择的字段生成一张表,并调用UDTF。

    2023-10-23 11:00:12
    赞同 展开评论 打赏
  • 试试指定checkpoint的路径,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-10-23 08:07:09
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载