diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java index 320ace4..a7c9f29 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java @@ -62,6 +62,8 @@ private final Map dynamicObjectInspectors; private Map dynamicOutputJobInfo; + private String HIVE_DEFAULT_PARTITION_VALUE = null; + /** * @param baseWriter RecordWriter to contain * @param context current TaskAttemptContext @@ -86,6 +88,7 @@ public DynamicPartitionFileRecordWriterContainer( this.dynamicContexts = new HashMap(); this.dynamicObjectInspectors = new HashMap(); this.dynamicOutputJobInfo = new HashMap(); + this.HIVE_DEFAULT_PARTITION_VALUE = HiveConf.getVar(context.getConfiguration(), HiveConf.ConfVars.DEFAULTPARTITIONNAME); } @Override @@ -136,7 +139,8 @@ protected LocalFileWriter getLocalFileWriter(HCatRecord value) throws IOExceptio // be done before we delete cols. List dynamicPartValues = new ArrayList(); for (Integer colToAppend : dynamicPartCols) { - dynamicPartValues.add(value.get(colToAppend).toString()); + Object partitionValue = value.get(colToAppend); + dynamicPartValues.add(partitionValue == null? HIVE_DEFAULT_PARTITION_VALUE : partitionValue.toString()); } String dynKey = dynamicPartValues.toString();