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)