diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonDictionaryDecodeReadSupport.java b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonDictionaryDecodeReadSupport.java
index bc66d49..f08b92b 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonDictionaryDecodeReadSupport.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonDictionaryDecodeReadSupport.java
@@ -231,7 +231,7 @@
       case SHORT:
         return new ShortWritable((Short) obj);
       case DATE:
-        return new DateWritable(new Date((Integer) obj));
+        return new DateWritable(new Date((long) obj));
       case TIMESTAMP:
         return new TimestampWritable(new Timestamp((long) obj));
       case STRING:
@@ -239,8 +239,9 @@
       case DECIMAL:
         return new HiveDecimalWritable(
             HiveDecimal.create(new java.math.BigDecimal(obj.toString())));
+      default:
+        throw new IOException("unsupported data type:" + dataType);
     }
-    throw new IOException("Unknown primitive : " + dataType.getName());
   }
 
   /**
@@ -282,6 +283,9 @@
       case DECIMAL:
         ((HiveDecimalWritable) writable)
             .set(HiveDecimal.create(new java.math.BigDecimal(obj.toString())));
+        break;
+      default:
+        throw new IOException("unsupported data type:" + dataType);
     }
   }
 
diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveInputSplit.java b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveInputSplit.java
index b922295..9171470 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveInputSplit.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveInputSplit.java
@@ -223,10 +223,10 @@
 
     double seg1 = Double.parseDouble(segmentId);
     double seg2 = Double.parseDouble(other.getSegmentId());
-    if (seg1 - seg2 < 0) {
+    if (Double.compare(seg1, seg2) < 0) {
       return -1;
     }
-    if (seg1 - seg2 > 0) {
+    if (Double.compare(seg1, seg2) > 0) {
       return 1;
     }
 
@@ -262,6 +262,28 @@
     return 0;
   }
 
+  @Override public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+
+    if (!(obj instanceof CarbonHiveInputSplit)) {
+      return false;
+    }
+
+    CarbonHiveInputSplit other = (CarbonHiveInputSplit) obj;
+    return 0 == this.compareTo(other);
+  }
+
+  @Override public int hashCode() {
+    int result = taskId.hashCode();
+    result = 31 * result + segmentId.hashCode();
+    result = 31 * result + bucketId.hashCode();
+    result = 31 * result + invalidSegments.hashCode();
+    result = 31 * result + numberOfBlocklets;
+    return result;
+  }
+
   @Override public String getBlockPath() {
     return getPath().getName();
   }
diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveRecordReader.java b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveRecordReader.java
index ae87d66..b8bd0e2 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveRecordReader.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonHiveRecordReader.java
@@ -20,7 +20,6 @@
 import java.sql.Date;
 import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
@@ -45,9 +44,7 @@
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.hadoop.io.ArrayWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -61,7 +58,6 @@
     implements org.apache.hadoop.mapred.RecordReader<Void, ArrayWritable> {
 
   private ArrayWritable valueObj = null;
-  private CarbonObjectInspector objInspector;
   private long recordReaderCounter = 0;
   private int[] columnIds;
 
@@ -95,14 +91,8 @@
     List<TypeInfo> columnTypes;
     // Get column names and sort order
     final String colIds = conf.get("hive.io.file.readcolumn.ids");
-    final String columnNameProperty = conf.get(serdeConstants.LIST_COLUMNS);
     final String columnTypeProperty = conf.get(serdeConstants.LIST_COLUMN_TYPES);
 
-    if (columnNameProperty.length() == 0) {
-      columnNames = new ArrayList<String>();
-    } else {
-      columnNames = Arrays.asList(columnNameProperty.split(","));
-    }
     if (columnTypeProperty.length() == 0) {
       columnTypes = new ArrayList<TypeInfo>();
     } else {
@@ -115,7 +105,6 @@
 
     if (!colIds.equals("")) {
       String[] arraySelectedColId = colIds.split(",");
-      List<TypeInfo> reqColTypes = new ArrayList<TypeInfo>();
       columnIds = new int[arraySelectedColId.length];
       int columnId = 0;
       for (int j = 0; j < arraySelectedColId.length; j++) {
@@ -124,8 +113,6 @@
       }
     }
 
-    rowTypeInfo = TypeInfoFactory.getStructTypeInfo(columnNames, columnTypes);
-    this.objInspector = new CarbonObjectInspector((StructTypeInfo) rowTypeInfo);
   }
 
   @Override public boolean next(Void aVoid, ArrayWritable value) throws IOException {
diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonObjectInspector.java b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonObjectInspector.java
index 4c7f1a6..6722dcf 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonObjectInspector.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/CarbonObjectInspector.java
@@ -166,7 +166,7 @@
     return hash;
   }
 
-  class StructFieldImpl implements StructField {
+  private static class StructFieldImpl implements StructField {
 
     private final String name;
     private final ObjectInspector inspector;
diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/MapredCarbonInputFormat.java b/integration/hive/src/main/java/org/apache/carbondata/hive/MapredCarbonInputFormat.java
index 273536a..86ebc0d 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/MapredCarbonInputFormat.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/MapredCarbonInputFormat.java
@@ -123,7 +123,6 @@
     // getting the table absoluteTableIdentifier from the carbonTable
     // to avoid unnecessary deserialization
 
-    StringBuilder colNames = new StringBuilder();
     AbsoluteTableIdentifier identifier = carbonTable.getAbsoluteTableIdentifier();
 
     String projection = getProjection(configuration, carbonTable,
diff --git a/integration/hive/src/main/java/org/apache/carbondata/hive/server/HiveEmbeddedServer2.java b/integration/hive/src/main/java/org/apache/carbondata/hive/server/HiveEmbeddedServer2.java
index ae931fb..5bc6461 100644
--- a/integration/hive/src/main/java/org/apache/carbondata/hive/server/HiveEmbeddedServer2.java
+++ b/integration/hive/src/main/java/org/apache/carbondata/hive/server/HiveEmbeddedServer2.java
@@ -19,6 +19,7 @@
 
 import java.io.File;
 import java.lang.reflect.Field;
+import java.security.SecureRandom;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -51,6 +52,7 @@
   private HiveServer2 hiveServer;
   private HiveConf config;
   private int port;
+  private static Random secureRandom = new SecureRandom();
 
   public void start() throws Exception {
     log.info("Starting Hive Local/Embedded Server...");
@@ -112,11 +114,18 @@
     conf.addToRestrictList("columns.comments");
     conf.set("hive.scratch.dir.permission", "777");
     conf.setVar(ConfVars.SCRATCHDIRPERMISSION, "777");
-    scratchDirFile.mkdirs();
-    // also set the permissions manually since Hive doesn't do it...
-    scratchDirFile.setWritable(true, false);
+    if (!scratchDirFile.exists()) {
+      if (!scratchDirFile.mkdirs()) {
+        throw new IllegalArgumentException("could not create the directory:" + scratchDir);
+      }
+      // also set the permissions manually since Hive doesn't do it...
+      if (!scratchDirFile.setWritable(true, false)) {
+        throw new IllegalArgumentException("could not set write permissions for the directory:" +
+            scratchDir);
+      }
+    }
 
-    int random = new Random().nextInt();
+    int random = secureRandom.nextInt();
 
     conf.set("hive.metastore.warehouse.dir", scratchDir + "/warehouse" + random);
     conf.set("hive.metastore.metadb.dir", scratchDir + "/metastore_db" + random);
diff --git a/pom.xml b/pom.xml
index f722c66..df3c5bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,7 @@
     <module>hadoop</module>
     <module>integration/spark-common</module>
     <module>integration/spark-common-test</module>
+    <module>integration/hive</module>
     <module>assembly</module>
   </modules>
 
