[
https://issues.apache.org/jira/browse/HIVE-18393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sahil Takiar updated HIVE-18393:
--------------------------------
Description:
TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean
when read as String, Varchar or Char should return the correct data. Now this
results in error for parquet tables.
Test Case:
{code}
drop table if exists testAltCol;
create table testAltCol
(cId TINYINT,
cTimeStamp TIMESTAMP,
cDecimal DECIMAL(38,18),
cDouble DOUBLE,
cFloat FLOAT,
cBigInt BIGINT,
cInt INT,
cSmallInt SMALLINT,
cTinyint TINYINT,
cBoolean BOOLEAN);
insert into testAltCol values
(1,
'2017-11-07 09:02:49.999999999',
12345678901234567890.123456789012345678,
1.79e308,
3.4e38,
1234567890123456789,
1234567890,
12345,
123,
TRUE);
insert into testAltCol values
(2,
'1400-01-01 01:01:01.000000001',
1.1,
2.2,
3.3,
1,
2,
3,
4,
FALSE);
insert into testAltCol values
(3,
'1400-01-01 01:01:01.000000001',
10.1,
20.2,
30.3,
1234567890123456789,
1234567890,
12345,
123,
TRUE);
select cId, cTimeStamp from testAltCol order by cId;
select cId, cDecimal, cDouble, cFloat from testAltCol order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId;
select cId, cBoolean from testAltCol order by cId;
drop table if exists testAltColP;
create table testAltColP stored as parquet as select * from testAltCol;
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp STRING,
cDecimal STRING,
cDouble STRING,
cFloat STRING,
cBigInt STRING,
cInt STRING,
cSmallInt STRING,
cTinyint STRING,
cBoolean STRING);
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp VARCHAR(100),
cDecimal VARCHAR(100),
cDouble VARCHAR(100),
cFloat VARCHAR(100),
cBigInt VARCHAR(100),
cInt VARCHAR(100),
cSmallInt VARCHAR(100),
cTinyint VARCHAR(100),
cBoolean VARCHAR(100));
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp CHAR(100),
cDecimal CHAR(100),
cDouble CHAR(100),
cFloat CHAR(100),
cBigInt CHAR(100),
cInt CHAR(100),
cSmallInt CHAR(100),
cTinyint CHAR(100),
cBoolean CHAR(100));
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
drop table if exists testAltColP;
Error:
FAILED: Execution Error, return code 2 from
org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Excerpt for log:
2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0]
mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime
Error while processing row [Error getting row data with exception
java.lang.UnsupportedOperationException: Cannot inspect
org.apache.hadoop.hive.serde2.io.TimestampWritable
at
org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77)
{code}
was:
TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean
when read as String, Varchar or Char should return the correct data. Now this
results in error for parquet tables.
Test Case:
drop table if exists testAltCol;
create table testAltCol
(cId TINYINT,
cTimeStamp TIMESTAMP,
cDecimal DECIMAL(38,18),
cDouble DOUBLE,
cFloat FLOAT,
cBigInt BIGINT,
cInt INT,
cSmallInt SMALLINT,
cTinyint TINYINT,
cBoolean BOOLEAN);
insert into testAltCol values
(1,
'2017-11-07 09:02:49.999999999',
12345678901234567890.123456789012345678,
1.79e308,
3.4e38,
1234567890123456789,
1234567890,
12345,
123,
TRUE);
insert into testAltCol values
(2,
'1400-01-01 01:01:01.000000001',
1.1,
2.2,
3.3,
1,
2,
3,
4,
FALSE);
insert into testAltCol values
(3,
'1400-01-01 01:01:01.000000001',
10.1,
20.2,
30.3,
1234567890123456789,
1234567890,
12345,
123,
TRUE);
select cId, cTimeStamp from testAltCol order by cId;
select cId, cDecimal, cDouble, cFloat from testAltCol order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId;
select cId, cBoolean from testAltCol order by cId;
drop table if exists testAltColP;
create table testAltColP stored as parquet as select * from testAltCol;
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp STRING,
cDecimal STRING,
cDouble STRING,
cFloat STRING,
cBigInt STRING,
cInt STRING,
cSmallInt STRING,
cTinyint STRING,
cBoolean STRING);
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp VARCHAR(100),
cDecimal VARCHAR(100),
cDouble VARCHAR(100),
cFloat VARCHAR(100),
cBigInt VARCHAR(100),
cInt VARCHAR(100),
cSmallInt VARCHAR(100),
cTinyint VARCHAR(100),
cBoolean VARCHAR(100));
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
alter table testAltColP replace columns
(cId TINYINT,
cTimeStamp CHAR(100),
cDecimal CHAR(100),
cDouble CHAR(100),
cFloat CHAR(100),
cBigInt CHAR(100),
cInt CHAR(100),
cSmallInt CHAR(100),
cTinyint CHAR(100),
cBoolean CHAR(100));
select cId, cTimeStamp from testAltColP order by cId;
select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
select cId, cBoolean from testAltColP order by cId;
drop table if exists testAltColP;
Error:
FAILED: Execution Error, return code 2 from
org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Excerpt for log:
2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0]
mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime
Error while processing row [Error getting row data with exception
java.lang.UnsupportedOperationException: Cannot inspect
org.apache.hadoop.hive.serde2.io.TimestampWritable
at
org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77)
> Error returned when some other type is read as string from parquet tables
> -------------------------------------------------------------------------
>
> Key: HIVE-18393
> URL: https://issues.apache.org/jira/browse/HIVE-18393
> Project: Hive
> Issue Type: Bug
> Reporter: Janaki Lahorani
> Assignee: Janaki Lahorani
> Priority: Major
> Fix For: 3.0.0
>
> Attachments: HIVE-18393.1.patch, HIVE-18393.1.patch,
> HIVE-18393.2.patch, HIVE-18393.3.patch
>
>
> TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean
> when read as String, Varchar or Char should return the correct data. Now
> this results in error for parquet tables.
> Test Case:
> {code}
> drop table if exists testAltCol;
> create table testAltCol
> (cId TINYINT,
> cTimeStamp TIMESTAMP,
> cDecimal DECIMAL(38,18),
> cDouble DOUBLE,
> cFloat FLOAT,
> cBigInt BIGINT,
> cInt INT,
> cSmallInt SMALLINT,
> cTinyint TINYINT,
> cBoolean BOOLEAN);
> insert into testAltCol values
> (1,
> '2017-11-07 09:02:49.999999999',
> 12345678901234567890.123456789012345678,
> 1.79e308,
> 3.4e38,
> 1234567890123456789,
> 1234567890,
> 12345,
> 123,
> TRUE);
> insert into testAltCol values
> (2,
> '1400-01-01 01:01:01.000000001',
> 1.1,
> 2.2,
> 3.3,
> 1,
> 2,
> 3,
> 4,
> FALSE);
> insert into testAltCol values
> (3,
> '1400-01-01 01:01:01.000000001',
> 10.1,
> 20.2,
> 30.3,
> 1234567890123456789,
> 1234567890,
> 12345,
> 123,
> TRUE);
> select cId, cTimeStamp from testAltCol order by cId;
> select cId, cDecimal, cDouble, cFloat from testAltCol order by cId;
> select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId;
> select cId, cBoolean from testAltCol order by cId;
> drop table if exists testAltColP;
> create table testAltColP stored as parquet as select * from testAltCol;
> select cId, cTimeStamp from testAltColP order by cId;
> select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
> select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
> select cId, cBoolean from testAltColP order by cId;
> alter table testAltColP replace columns
> (cId TINYINT,
> cTimeStamp STRING,
> cDecimal STRING,
> cDouble STRING,
> cFloat STRING,
> cBigInt STRING,
> cInt STRING,
> cSmallInt STRING,
> cTinyint STRING,
> cBoolean STRING);
> select cId, cTimeStamp from testAltColP order by cId;
> select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
> select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
> select cId, cBoolean from testAltColP order by cId;
> alter table testAltColP replace columns
> (cId TINYINT,
> cTimeStamp VARCHAR(100),
> cDecimal VARCHAR(100),
> cDouble VARCHAR(100),
> cFloat VARCHAR(100),
> cBigInt VARCHAR(100),
> cInt VARCHAR(100),
> cSmallInt VARCHAR(100),
> cTinyint VARCHAR(100),
> cBoolean VARCHAR(100));
> select cId, cTimeStamp from testAltColP order by cId;
> select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
> select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
> select cId, cBoolean from testAltColP order by cId;
> alter table testAltColP replace columns
> (cId TINYINT,
> cTimeStamp CHAR(100),
> cDecimal CHAR(100),
> cDouble CHAR(100),
> cFloat CHAR(100),
> cBigInt CHAR(100),
> cInt CHAR(100),
> cSmallInt CHAR(100),
> cTinyint CHAR(100),
> cBoolean CHAR(100));
> select cId, cTimeStamp from testAltColP order by cId;
> select cId, cDecimal, cDouble, cFloat from testAltColP order by cId;
> select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId;
> select cId, cBoolean from testAltColP order by cId;
> drop table if exists testAltColP;
> Error:
> FAILED: Execution Error, return code 2 from
> org.apache.hadoop.hive.ql.exec.mr.MapRedTask
> Excerpt for log:
> 2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0]
> mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime
> Error while processing row [Error getting row data with exception
> java.lang.UnsupportedOperationException: Cannot inspect
> org.apache.hadoop.hive.serde2.io.TimestampWritable
> at
> org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77)
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)