Gopal V created HIVE-11472:
------------------------------

             Summary: ORC StringDirectTreeReader is thrashing the GC due to 
byte[] allocation per row
                 Key: HIVE-11472
                 URL: https://issues.apache.org/jira/browse/HIVE-11472
             Project: Hive
          Issue Type: Bug
    Affects Versions: 1.3.0, 2.0.0
            Reporter: Gopal V
             Fix For: 1.3.0, 2.0.0


For every row x column

{code}
        int len = (int) lengths.next();
        int offset = 0;
        byte[] bytes = new byte[len];
        while (len > 0) {
          int written = stream.read(bytes, offset, len);
          if (written < 0) {
            throw new EOFException("Can't finish byte read from " + stream);
          }
{code}

https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/io/orc/TreeReaderFactory.java#L1552

This is not a big issue until it misses the GC TLAB.

>From hadoop-2.6.x (HADOOP-10855) you can read into a Text directly. 

Possibly can create a different TreeReader from the factory for 2.6.x & use a 
DataInputStream per stream and prevent an allocation in the inner loop.

{code}
        int len = (int) lengths.next();
        result.readWithKnownLength(datastream, len);
{code}



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

Reply via email to