[ https://issues.apache.org/jira/browse/HIVE-22224?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
cdmikechen updated HIVE-22224: ------------------------------ Description: When user create an external table and import a parquet-avro data with 1.8.2 version which supported logical_type in Hive2.3 or before version, Hive can not read timestamp type column data correctly. Hive will read it as LongWritable which it actually stores as long(logical_type=timestamp-millis).So we may add some codes in org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector.java to let Hive cast long type to timestamp type. Some code like below: public Timestamp getPrimitiveJavaObject(Object o) { if (o instanceof LongWritable) { return new Timestamp(((LongWritable) o).get()); } return o == null ? null : ((TimestampWritable) o).getTimestamp(); } was: When user create an external table and import a parquet-avro data with 1.8.2 version which supported logical_type in Hive2.3 or before version, Hive can not read timestamp type column data correctly. Hive will read it as LongWritable which it actually stores as long(logical_type=timestamp-millis).So we may add some codes in org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector.java to let Hive cast long type to timestamp type. Some code like below: public Timestamp getPrimitiveJavaObject(Object o) { if (o instanceof LongWritable) { return new Timestamp(((LongWritable) o).get()); } return o == null ? null : ((TimestampWritable) o).getTimestamp(); } > Support Parquet-Avro Timestamp Type > ----------------------------------- > > Key: HIVE-22224 > URL: https://issues.apache.org/jira/browse/HIVE-22224 > Project: Hive > Issue Type: Bug > Components: Database/Schema > Affects Versions: 2.3.5, 2.3.6 > Reporter: cdmikechen > Priority: Major > Labels: parquet > Fix For: 2.3.7 > > > When user create an external table and import a parquet-avro data with 1.8.2 > version which supported logical_type in Hive2.3 or before version, Hive can > not read timestamp type column data correctly. > Hive will read it as LongWritable which it actually stores as > long(logical_type=timestamp-millis).So we may add some codes in > org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector.java > to let Hive cast long type to timestamp type. > Some code like below: > > public Timestamp getPrimitiveJavaObject(Object o) { > if (o instanceof LongWritable) { > return new Timestamp(((LongWritable) o).get()); > } > return o == null ? null : ((TimestampWritable) o).getTimestamp(); > } > -- This message was sent by Atlassian Jira (v8.3.4#803005)