[ 
https://issues.apache.org/jira/browse/DRILL-5290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15879436#comment-15879436
 ] 

ASF GitHub Bot commented on DRILL-5290:
---------------------------------------

Github user sudheeshkatkam commented on a diff in the pull request:

    https://github.com/apache/drill/pull/757#discussion_r102597862
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java ---
    @@ -91,7 +91,12 @@ public QueryContext(final UserSession session, final 
DrillbitContext drillbitCon
         executionControls = new ExecutionControls(queryOptions, 
drillbitContext.getEndpoint());
         plannerSettings = new PlannerSettings(queryOptions, 
getFunctionRegistry());
         plannerSettings.setNumEndPoints(drillbitContext.getBits().size());
    -    table = new DrillOperatorTable(getFunctionRegistry(), 
drillbitContext.getOptionManager());
    +
    +    if (getOption(ExecConstants.USE_DYNAMIC_UDFS).bool_val) {
    +      table = new DrillOperatorTable(getFunctionRegistry(), 
drillbitContext.getOptionManager());
    --- End diff --
    
    Avoid calling methods in this class in ctor. Use
    
    `this.table = new 
DrillOperatorTable(drillbitContext.getFunctionImplementationRegistry(), 
drillbitContext.getOptionManager());`


> Provide an option to build operator table once for built-in static functions 
> and reuse it across queries.
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-5290
>                 URL: https://issues.apache.org/jira/browse/DRILL-5290
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.9.0
>            Reporter: Padma Penumarthy
>            Assignee: Padma Penumarthy
>             Fix For: 1.10
>
>
> Currently, DrillOperatorTable which contains standard SQL operators and 
> functions and Drill User Defined Functions (UDFs) (built-in and dynamic) gets 
> built for each query as part of creating QueryContext. This is an expensive 
> operation ( ~30 msec to build) and allocates  ~2M on heap for each query. For 
> high throughput, concurrent low latency operational queries, we quickly run 
> out of heap memory, causing JVM hangs. Build operator table once during 
> startup for static built-in functions and save in DrillbitContext, so we can 
> reuse it across queries.
> Provide an system/session option to not use dynamic UDFs so we can use the 
> operator table saved in DrillbitContext and avoid building each time.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to