Hi Dawid,

I think defering the instantiation of temporary functions to compile time is 
quite a good idea but needs further discussion. As it is orthogonal with this 
FLIP, we could continue the discussion in a new thread later. What do you think?

Best,
Wei

> 在 2020年3月5日,21:11,Wei Zhong <weizhong0...@gmail.com> 写道:
> 
> Hi Dawid,
> 
> Thanks for your suggestion. 
> 
> After some investigation, there are two designs in my mind about how to defer 
> the instantiation of temporary system function and temporary catalog function 
> to compile time.
> 
> 1. FunctionCatalog accepts both FunctionDefinitions and uninstantiated 
> temporary functions. The uninstantiated temporary functions will be 
> instantiated when compiling. There is no public API change in this design, 
> but the FunctionCatalog needs to store and process both FunctionDefinitions 
> and uninstantiated temporary functions.
> 
> 2. FunctionCatalog accepts only uninstantiated temporary functions. In this 
> design we need to remove those APIs that accepts FunctionDefinitions from 
> TableEnvironment, i.e. `void createTemporaryFunction(String path, 
> UserDefinedFunction functionInstance)` and `void 
> createTemporarySystemFunction(String name, UserDefinedFunction 
> functionInstance)`. But the FunctionCatalog only needs to store and process 
> uninstantiated temporary functions.
> 
> As I don't know the details about the plan to store temporary functions as 
> catalog functions instead of FunctionDefinitions, I'm not sure which solution 
> fits more. It would be great if you could share more details or share some 
> thoughts on these two solutions?
> 
> Best,
> Wei
> 
>> 在 2020年3月4日,16:17,Dawid Wysakowicz <dwysakow...@apache.org> 写道:
>> 
>> Hi all,
>> I had a really quick look and from my perspective the proposal looks fine.
>> I share Jarks opinion that the instantiation could be done at a later
>> stage. I agree with Wei it requires some changes in the internal
>> implementation of the FunctionCatalog, to store temporary functions as
>> catalog functions instead of FunctionDefinitions, but we have that on our
>> agenda anyway. I would suggest investigating if we could do that as part of
>> this flip already. Nevertheless this in theory can be also done later.
>> 
>> Best,
>> Dawid
>> 
>> On Mon, 2 Mar 2020, 14:58 Jark Wu, <imj...@gmail.com> wrote:
>> 
>>> Thanks for the explanation, Wei!
>>> 
>>> On Mon, 2 Mar 2020 at 20:59, Wei Zhong <weizhong0...@gmail.com> wrote:
>>> 
>>>> Hi Jark,
>>>> 
>>>> Thanks for your suggestion.
>>>> 
>>>> Actually, the timing of starting a Python process depends on the UDF
>>> type,
>>>> because the Python process is used to provide the necessary information
>>> to
>>>> instantiate the FunctionDefinition object of the Python UDF. For catalog
>>>> function, the FunctionDefinition will be instantiated when compiling the
>>>> job, which means the Python process is required during the compilation
>>>> instead of the registeration. For temporary system function and temporary
>>>> catalog function, the FunctionDefinition will be instantiated during the
>>>> UDF registeration, so the Python process need to be started at that time.
>>>> 
>>>> But this FLIP will only support registering the temporary system function
>>>> and temporary catalog function in SQL DDL because registering Python UDF
>>> to
>>>> catalog is not supported yet. We plan to support the registeration of
>>>> Python catalog function (via Table API and SQL DDL) in a separate FLIP.
>>>> I'll add a non-goal section to the FLIP page to illustrate this.
>>>> 
>>>> Best,
>>>> Wei
>>>> 
>>>> 
>>>>> 在 2020年3月2日,15:11,Jark Wu <imj...@gmail.com> 写道:
>>>>> 
>>>>> Hi Weizhong,
>>>>> 
>>>>> Thanks for proposing this feature. In geneal, I'm +1 from the table's
>>>> view.
>>>>> 
>>>>> I have one suggestion: I think the register python function into
>>> catalog
>>>>> doesn't need to startup python process (the "High Level Sequence
>>> Diagram"
>>>>> in your FLIP).
>>>>> Because only meta-information is persisted into catalog, we don't need
>>> to
>>>>> store "return type", "input types" into catalog.
>>>>> I guess the python process is required when compiling a SQL job.
>>>>> 
>>>>> Best,
>>>>> Jark
>>>>> 
>>>>> 
>>>>> 
>>>>> On Fri, 28 Feb 2020 at 19:04, Benchao Li <libenc...@gmail.com> wrote:
>>>>> 
>>>>>> Big +1 for this feature.
>>>>>> 
>>>>>> We built our SQL platform on Java Table API, and most common UDF are
>>>>>> implemented in Java. However some python developers are not familiar
>>>> with
>>>>>> Java/Scala, and it's very inconvenient for these users to use UDF in
>>>> SQL.
>>>>>> 
>>>>>> Wei Zhong <weizhong0...@gmail.com> 于2020年2月28日周五 下午6:58写道:
>>>>>> 
>>>>>>> Thank for your reply Dan!
>>>>>>> 
>>>>>>> By the way, this FLIP is closely related to the SQL API.  @Jark Wu <
>>>>>>> imj...@gmail.com> @Timo <twal...@apache.org> could you please take a
>>>>>>> look?
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Wei
>>>>>>> 
>>>>>>>> 在 2020年2月25日,16:25,zoudan <zoud...@163.com> 写道:
>>>>>>>> 
>>>>>>>> +1 for supporting Python UDF in Java/Scala Table API.
>>>>>>>> This is a great feature and would be helpful for python users!
>>>>>>>> 
>>>>>>>> Best,
>>>>>>>> Dan Zou
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> 
>>>>>> Benchao Li
>>>>>> School of Electronics Engineering and Computer Science, Peking
>>>> University
>>>>>> Tel:+86-15650713730
>>>>>> Email: libenc...@gmail.com; libenc...@pku.edu.cn
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
> 

Reply via email to