abstractdog commented on code in PR #5174: URL: https://github.com/apache/hive/pull/5174#discussion_r1547342603
########## ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HiveSplitGenerator.java: ########## @@ -154,6 +165,90 @@ private void prepare(InputInitializerContext initializerContext) throws IOExcept LOG.info("SplitLocationProvider: " + splitLocationProvider); } + /** + * SplitSerializer is a helper class for taking care of serializing splits to the tez scratch dir + * when a size criteria defined by "hive.tez.split.fs.serialization.threshold" is met. + * It utilizes an ExecutorService for parallel writes to prevent a single split write operation + * becoming the bottleneck (as write() is called from a loop currently). + */ + class SplitSerializer { + // fields needed for filepath + private String queryId; + private String inputName; + private int vertexId; + private Path appStagingPath; + // metrics + private AtomicInteger timeSpentWithSplitWriteMs = new AtomicInteger(0); + private AtomicInteger splitsWritten = new AtomicInteger(0); + // lazy initialized filesystem and executor + private FileSystem fs; + private ExecutorService executor; + + /** + * Lazy init filesystem and executor service: don't initialize if there is no split serialized at all. + * No need to synchronize, this is called from a loop. + */ + private void lazyInit() throws IOException { + if (fs != null) { + return; + } + queryId = jobConf.get(HiveConf.ConfVars.HIVEQUERYID.varname); + inputName = getContext().getInputName(); + vertexId = getContext().getVertexId(); + appStagingPath = TezCommonUtils.getTezSystemStagingPath(conf, getContext().getApplicationId().toString()); Review Comment: no reason, I can initialize them there also getContext() is not null, if it is, it's a bug and we're fine to fail -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org