关于flink sql的内置函数实现与debug

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

关于flink sql的内置函数实现与debug

shizk233
hi all,

请教一下,flink sql内置的众多functions[1]有对应的Java实现类吗?我只在blink table
planner模块下的functions package里找到了一部分,并且是基于Expresstion的。

问题来源:我试图在flink sql里去做debug,如果是自定义的udf可以打断点在实现上,但内置函数没找到相应的实现,似乎也没有相应的文档在这一块。

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/functions/systemFunctions.html
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink sql的内置函数实现与debug

Jark
Administrator
Flink 内置函数的有一些是直接 codegen 出来的,有一些是调用的 util。
对于前者,得去看org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens。
对于后者,可以看下 org.apache.flink.table.planner.codegen.calls.BuiltInMethods.

Best,
Jark

On Wed, 12 Aug 2020 at 10:39, shizk233 <[hidden email]> wrote:

> hi all,
>
> 请教一下,flink sql内置的众多functions[1]有对应的Java实现类吗?我只在blink table
> planner模块下的functions package里找到了一部分,并且是基于Expresstion的。
>
> 问题来源:我试图在flink
> sql里去做debug,如果是自定义的udf可以打断点在实现上,但内置函数没找到相应的实现,似乎也没有相应的文档在这一块。
>
> [1]
>
> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/functions/systemFunctions.html
>
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink sql的内置函数实现与debug

Benchao Li-2
In reply to this post by shizk233
Hi,

内置的scalar
function都是通过代码生成来关联到的,入口是`ExprCodeGenerator#generateCallExpression(...)`,
你可以顺着这里找到你需要看的具体的函数的对应的方法。
PS:有很多方法是纯代码生成的,可能没法调试

内置的aggregate function有两种,一种是通过表达式直接写的,叫做`DeclarativeAggregateFunction`;
一种是通过类似于UDAF的方式来实现的,继承的是`AggregateFunction`
他们都在`org.apache.flink.table.planner.functions.aggfunctions`
包里面(flink-table-planner-blink模块)

shizk233 <[hidden email]> 于2020年8月12日周三 上午10:39写道:

> hi all,
>
> 请教一下,flink sql内置的众多functions[1]有对应的Java实现类吗?我只在blink table
> planner模块下的functions package里找到了一部分,并且是基于Expresstion的。
>
> 问题来源:我试图在flink
> sql里去做debug,如果是自定义的udf可以打断点在实现上,但内置函数没找到相应的实现,似乎也没有相应的文档在这一块。
>
> [1]
>
> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/functions/systemFunctions.html
>


--

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

Re: 关于flink sql的内置函数实现与debug

shizk233
感谢大佬们的指点🙏

Benchao Li <[hidden email]> 于2020年8月12日周三 上午11:04写道:

> Hi,
>
> 内置的scalar
> function都是通过代码生成来关联到的,入口是`ExprCodeGenerator#generateCallExpression(...)`,
> 你可以顺着这里找到你需要看的具体的函数的对应的方法。
> PS:有很多方法是纯代码生成的,可能没法调试
>
> 内置的aggregate function有两种,一种是通过表达式直接写的,叫做`DeclarativeAggregateFunction`;
> 一种是通过类似于UDAF的方式来实现的,继承的是`AggregateFunction`
> 他们都在`org.apache.flink.table.planner.functions.aggfunctions`
> 包里面(flink-table-planner-blink模块)
>
> shizk233 <[hidden email]> 于2020年8月12日周三 上午10:39写道:
>
> > hi all,
> >
> > 请教一下,flink sql内置的众多functions[1]有对应的Java实现类吗?我只在blink table
> > planner模块下的functions package里找到了一部分,并且是基于Expresstion的。
> >
> > 问题来源:我试图在flink
> > sql里去做debug,如果是自定义的udf可以打断点在实现上,但内置函数没找到相应的实现,似乎也没有相应的文档在这一块。
> >
> > [1]
> >
> >
> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/functions/systemFunctions.html
> >
>
>
> --
>
> Best,
> Benchao Li
>