[
https://issues.apache.org/jira/browse/BEAM-2445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16099079#comment-16099079
]
Xu Mingmin commented on BEAM-2445:
----------------------------------
Talked with Luke, we plan to enable service loader for UDFs in both CLI and
DSL, as:
1). for CLI
The service loader is called by
{code}
add jar [load] [force|ignore|error] /path/to/jar
{code}
, it loads all functions automate and handle any potential conflict as
{{[force|ignore|error]}}
Meanwhile, the traditional usage is also kept, whenever user prefer it, also in
case of resolving conflict of auto load
{code}
add jar /path/to/jar
add funtion fun_name path.to.udf.class
{code}
2). for DSL
DSL can also benefit from this service loader, to avoid a long chain of
{{withUdf().withUdf().withUdf()...}}
The service is proposed as
{code}
interface UdfRegistrar {
Map<String, Class<?>> udfsByName();
}
{code}
UDF developer can leverage it to enable service loader.
> DSL SQL to use service locator pattern to automatically register UDFs
> ---------------------------------------------------------------------
>
> Key: BEAM-2445
> URL: https://issues.apache.org/jira/browse/BEAM-2445
> Project: Beam
> Issue Type: Improvement
> Components: dsl-sql
> Reporter: Luke Cwik
> Assignee: James Xu
> Priority: Minor
>
> Use a service locator pattern to find UDFs that can be registered. The
> service loader can be used to register UDFs for standard functions via DSL
> SQL, additional UDFs registered by third party libraries, and end user
> created UDFs.
> Example ServiceLoader usage within Apache Beam to find coder providers:
> https://github.com/apache/beam/blob/7126fdc6ee5671e99a2dede3f25ba616aa0e8fa4/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java#L147
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)