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

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

Github user chunhui-shi commented on a diff in the pull request:

    https://github.com/apache/drill/pull/654#discussion_r91152465
  
    --- Diff: 
contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveUtilities.java
 ---
    @@ -398,17 +399,13 @@ public static void addConfToJob(final JobConf job, 
final Properties properties)
        * Wrapper around {@link MetaStoreUtils#getPartitionMetadata(Partition, 
Table)} which also adds parameters from table
        * to properties returned by {@link 
MetaStoreUtils#getPartitionMetadata(Partition, Table)}.
        *
    -   * @param partition {@link Partition} instance
    -   * @param table {@link Table} instance
    +   * @param partition the source of partition level parameters
    +   * @param table     the source of table level parameters
        * @return properties
        */
    -  public static Properties getPartitionMetadata(final Partition partition, 
final Table table) {
    +  public static Properties getPartitionMetadata(final HivePartition 
partition, final HiveTable table) {
         final Properties properties;
    -    // exactly the same column lists for partitions and table
    -    // stored only in table to reduce physical plan serialization
    -    if (partition.getSd().getCols() == null) {
    -      partition.getSd().setCols(table.getSd().getCols());
    -    }
    +    restoreColumns(table, partition);
    --- End diff --
    
    could this restoreColumns fail the purpose of this fix? Since it is setting 
columns back to each partition, if getPartitionMetadata was called before the 
final physical plan generated, then these columns could be printed out to the 
plan again, could you check this possibility?


> Drill query on hive parquet table failed with OutOfMemoryError: Java heap 
> space
> -------------------------------------------------------------------------------
>
>                 Key: DRILL-5032
>                 URL: https://issues.apache.org/jira/browse/DRILL-5032
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Functions - Hive
>    Affects Versions: 1.8.0
>            Reporter: Serhii Harnyk
>            Assignee: Serhii Harnyk
>         Attachments: plan, plan with fix
>
>
> Following query on hive parquet table failed with OOM Java heap space:
> {code}
> select distinct(businessdate) from vmdr_trades where trade_date='2016-04-12'
> 2016-08-31 08:02:03,597 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.drill.exec.work.foreman.Foreman - Query text for query id 
> 283938c3-fde8-0fc6-37e1-9a568c7f5913: select distinct(businessdate) from 
> vmdr_trades where trade_date='2016-04-12'
> 2016-08-31 08:05:58,502 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Beginning partition pruning, pruning 
> class: 
> org.apache.drill.exec.planner.sql.logical.HivePushPartitionFilterIntoScan$2
> 2016-08-31 08:05:58,506 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Total elapsed time to build and analyze 
> filter tree: 1 ms
> 2016-08-31 08:05:58,506 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - No conditions were found eligible for 
> partition pruning.Total pruning elapsed time: 3 ms
> 2016-08-31 08:05:58,663 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Beginning partition pruning, pruning 
> class: 
> org.apache.drill.exec.planner.sql.logical.HivePushPartitionFilterIntoScan$2
> 2016-08-31 08:05:58,663 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Total elapsed time to build and analyze 
> filter tree: 0 ms
> 2016-08-31 08:05:58,663 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - No conditions were found eligible for 
> partition pruning.Total pruning elapsed time: 0 ms
> 2016-08-31 08:05:58,664 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Beginning partition pruning, pruning 
> class: 
> org.apache.drill.exec.planner.sql.logical.HivePushPartitionFilterIntoScan$1
> 2016-08-31 08:05:58,665 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - Total elapsed time to build and analyze 
> filter tree: 0 ms
> 2016-08-31 08:05:58,665 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] INFO  
> o.a.d.e.p.l.partition.PruneScanRule - No conditions were found eligible for 
> partition pruning.Total pruning elapsed time: 0 ms
> 2016-08-31 08:09:42,355 [283938c3-fde8-0fc6-37e1-9a568c7f5913:foreman] ERROR 
> o.a.drill.common.CatastrophicFailure - Catastrophic Failure Occurred, 
> exiting. Information message: Unable to handle out of memory condition in 
> Foreman.
> java.lang.OutOfMemoryError: Java heap space
>         at java.util.Arrays.copyOf(Arrays.java:3332) ~[na:1.8.0_74]
>         at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
>  ~[na:1.8.0_74]
>         at 
> java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
>  ~[na:1.8.0_74]
>         at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421) 
> ~[na:1.8.0_74]
>         at java.lang.StringBuilder.append(StringBuilder.java:136) 
> ~[na:1.8.0_74]
>         at java.lang.StringBuilder.append(StringBuilder.java:76) 
> ~[na:1.8.0_74]
>         at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:457) 
> ~[na:1.8.0_74]
>         at java.lang.StringBuilder.append(StringBuilder.java:166) 
> ~[na:1.8.0_74]
>         at java.lang.StringBuilder.append(StringBuilder.java:76) 
> ~[na:1.8.0_74]
>         at 
> com.google.protobuf.TextFormat$TextGenerator.write(TextFormat.java:538) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.TextFormat$TextGenerator.print(TextFormat.java:526) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.TextFormat$Printer.printFieldValue(TextFormat.java:389) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.TextFormat$Printer.printSingleField(TextFormat.java:327) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.TextFormat$Printer.printField(TextFormat.java:286) 
> ~[protobuf-java-2.5.0.jar:na]
>         at com.google.protobuf.TextFormat$Printer.print(TextFormat.java:273) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.TextFormat$Printer.access$400(TextFormat.java:248) 
> ~[protobuf-java-2.5.0.jar:na]
>         at com.google.protobuf.TextFormat.print(TextFormat.java:71) 
> ~[protobuf-java-2.5.0.jar:na]
>         at com.google.protobuf.TextFormat.printToString(TextFormat.java:118) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> com.google.protobuf.AbstractMessage.toString(AbstractMessage.java:106) 
> ~[protobuf-java-2.5.0.jar:na]
>         at 
> org.apache.drill.exec.planner.fragment.SimpleParallelizer.generateWorkUnit(SimpleParallelizer.java:395)
>  ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at 
> org.apache.drill.exec.planner.fragment.SimpleParallelizer.getFragments(SimpleParallelizer.java:134)
>  ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at 
> org.apache.drill.exec.work.foreman.Foreman.getQueryWorkUnit(Foreman.java:516) 
> ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at 
> org.apache.drill.exec.work.foreman.Foreman.runPhysicalPlan(Foreman.java:403) 
> ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at 
> org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:929) 
> ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:251) 
> ~[drill-java-exec-1.6.0.jar:1.6.0]
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [na:1.8.0_74]
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [na:1.8.0_74]
>         at java.lang.Thread.run(Thread.java:745) [na:1.8.0_74]
> 2016-08-31 08:09:43,358 [Drillbit-ShutdownHook#0] INFO  
> o.apache.drill.exec.server.Drillbit - Received shutdown request.
> 2016-08-31 08:09:49,385 [BitServer-3] INFO  
> o.a.d.exec.rpc.control.ControlClient - Channel closed /162.111.92.29:33973 
> <--> /162.111.92.29:31011.
> 2016-08-31 08:09:50,388 [pool-6-thread-2] INFO  
> o.a.drill.exec.rpc.data.DataServer - closed eventLoopGroup 
> io.netty.channel.epoll.EpollEventLoopGroup@268b55a9 in 1007 ms
> 2016-08-31 08:09:50,389 [pool-6-thread-2] INFO  
> o.a.drill.exec.service.ServiceEngine - closed dataPool in 1008 ms
> {code}
> The Drill cluster  having 16 nodes and current drill direct memory is 16GB 
> and heap memory 20GB.  table vmdr_trades is ~19GB and having 750+ partition 
> and each partition having one parquet file roughly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to