--- ./src/java/org/apache/hcatalog/mapreduce/FileRecordWriterContainer.java 2012-07-14 08:17:58.000000000 +0530 +++ /Users/rbalamohan/work/workspace/hcatalog_0.4/src/java/org/apache/hcatalog/mapreduce/FileRecordWriterContainer.java 2012-07-14 08:29:44.000000000 +0530 @@ -64,6 +64,7 @@ private final Map baseDynamicCommitters; private final Map dynamicContexts; private final Map dynamicObjectInspectors; + private Map dynamicOutputJobInfo; private final List partColsToDel; @@ -112,6 +113,7 @@ this.baseDynamicCommitters = null; this.dynamicContexts = null; this.dynamicObjectInspectors = null; + this.dynamicOutputJobInfo = null; } else { this.baseDynamicSerDe = new HashMap(); @@ -119,11 +121,12 @@ this.baseDynamicCommitters = new HashMap(); this.dynamicContexts = new HashMap(); this.dynamicObjectInspectors = new HashMap(); + this.dynamicOutputJobInfo = new HashMap(); } } /** - * @return the storagehandler + * @return the storageDriver */ public HCatStorageHandler getStorageHandler() { return storageHandler; @@ -160,7 +163,6 @@ SerDe localSerDe; OutputJobInfo localJobInfo = null; - if (dynamicPartitioningUsed){ // calculate which writer to use from the remaining values - this needs to be done before we delete cols List dynamicPartValues = new ArrayList(); @@ -225,18 +227,19 @@ baseDynamicCommitters.put(dynKey,baseOutputCommitter); dynamicContexts.put(dynKey,currTaskContext); dynamicObjectInspectors.put(dynKey,InternalUtil.createStructObjectInspector(jobInfo.getOutputSchema())); + dynamicOutputJobInfo.put(dynKey, HCatOutputFormat.getJobInfo(dynamicContexts.get(dynKey))); } - localJobInfo = HCatOutputFormat.getJobInfo(dynamicContexts.get(dynKey)); + + localJobInfo = dynamicOutputJobInfo.get(dynKey); localWriter = baseDynamicWriters.get(dynKey); localSerDe = baseDynamicSerDe.get(dynKey); localContext = dynamicContexts.get(dynKey); localObjectInspector = dynamicObjectInspectors.get(dynKey); } else{ - localJobInfo = HCatBaseOutputFormat.getJobInfo(context); + localJobInfo = jobInfo; localWriter = getBaseRecordWriter(); localSerDe = serDe; - localContext = HCatMapRedUtil.createTaskAttemptContext(context); localObjectInspector = objectInspector; }