[ 
https://issues.apache.org/jira/browse/HIVE-13534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xuefu Zhang updated HIVE-13534:
-------------------------------
    Summary: ClassCastException when trying to access TIMESTAMP columns into 
parquet file using hive external table   (was: Exception when trying to access 
TIMESTAMP columns into parquet file using hive external table )

> ClassCastException when trying to access TIMESTAMP columns into parquet file 
> using hive external table 
> -------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-13534
>                 URL: https://issues.apache.org/jira/browse/HIVE-13534
>             Project: Hive
>          Issue Type: Bug
>          Components: File Formats, Hive, Import/Export, JDBC
>            Reporter: Bobeff
>            Assignee: Sushanth Sowmyan
>            Priority: Critical
>
> Imported data was stored from a netezza datasource using a sqoop import 
> command like this 
> SQL DDL creation script of imported table looks like this 
> CREATE TABLE "ADMIN"."MIS_AUX_ITR" ( 
> "DDEBVAL" DATE, 
> "DFINVAL" DATE, 
> "NAUX" VARCHAR(6), 
> "CDMNITR" VARCHAR(3), 
> "CDERIMG" VARCHAR(1), 
> "DDERIMG" DATE 
> ); 
> Import sqoop job is the following 
> sqoop job 
> --create import-name 
> -- import 
> --connect jdbc:netezza://server:port/database 
> --username user 
> --password pwd 
> --table MIS_AUX_ITR 
> --as-parquetfile 
> --target-dir hdfs:///prod/ZA/dee/MIS_AUX_ITR 
> -m 1 
> After import parquet file schema is the following 
> > yarn jar /tmp/parquet-tools-1.6.0.jar schema 
> > /prod/ZA/dee/MIS_AUX_ITR/2cf3e971-4c2c-408f-bd86-5d3cf3bd4fa5.parquet 
> message MIS_AUX_ITR { 
> optional int64 DDEBVAL; 
> optional int64 DFINVAL; 
> optional binary NAUX (UTF8); 
> optional binary CDMNITR (UTF8); 
> optional binary CDERIMG (UTF8); 
> optional int64 DDERIMG; 
> } 
> In order to access data stored into the parquet file we created the external 
> table below 
> CREATE EXTERNAL TABLE za_dee.MIS_AUX_ITR 
> ( 
> `DDEBVAL`     DATE, 
> `DFINVAL`     DATE, 
> `NAUX`        VARCHAR(6), 
> `CDMNITR`     VARCHAR(3), 
> `CDERIMG`     VARCHAR(1), 
> `DDERIMG`     DATE 
> ) 
> COMMENT 'Table DEE MIS_AUX_ITR' 
> STORED AS PARQUET 
> LOCATION 
> '/prod/ZA/dee/MIS_AUX_ITR'; 
> But when we try to list data from external table above we get the following 
> exception 
> hive> CREATE EXTERNAL TABLE za_dee.MIS_AUX_ITR_V_PPROD 
> > ( 
> > `DDEBVAL`DATE, 
> > `DFINVAL`DATE, 
> > `NAUX`VARCHAR(6), 
> > `CDMNITR`VARCHAR(3), 
> > `CDERIMG`VARCHAR(1), 
> > `DDERIMG`DATE 
> > ) 
> > COMMENT 'Table DEE MIS_AUX_ITR_V_PROD' 
> > STORED AS PARQUET 
> > LOCATION 
> > '/prod/ZA/dee/MIS_AUX_ITR_V_PPROD'; 
> OK 
> Time taken: 0.196 seconds 
> hive> select * from za_dee.MIS_AUX_ITR_V_PPROD limit 100; 
> OK 
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
> SLF4J: Defaulting to no-operation (NOP) logger implementation 
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further 
> details. 
> Failed with exception 
> java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: 
> java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be 
> cast to org.apache.hadoop.hive.serde2.io.DateWritable 
> Time taken: 0.529 seconds 
> hive> 
> We also tried with the following external table 
> CREATE EXTERNAL TABLE za_dee.MIS_AUX_ITR_V_PPROD_BI 
> ( 
> `DDEBVAL`     BIGINT, 
> `DFINVAL`     BIGINT, 
> `NAUX`        VARCHAR(6), 
> `CDMNITR`     VARCHAR(3), 
> `CDERIMG`     VARCHAR(1), 
> `DDERIMG`     BIGINT 
> ) 
> COMMENT 'Table DEE MIS_AUX_ITR_V_PROD_BI' 
> STORED AS PARQUET 
> LOCATION '/prod/ZA/dee/MIS_AUX_ITR_V_PPROD'; 
> Then the “Date” columns are shown as “timestamp” values as below 
> hive> select DDEBVAL from za_dee.MIS_AUX_ITR_V_PPROD_BI limit 5; 
> OK 
> 1080770400000 
> 1080770400000 
> 1080770400000 
> 1080770400000 
> 1080770400000 
> Time taken: 0.081 seconds, Fetched: 5 row(s) 
> hive> 
> However “Date” values can be listed by casting as Timestamp 
> hive> select cast(DDEBVAL as Timestamp) from za_dee.MIS_AUX_ITR_V_PPROD_BI 
> limit 5; 
> OK 
> 2004-04-01 00:00:00 
> 2004-04-01 00:00:00 
> 2004-04-01 00:00:00 
> 2004-04-01 00:00:00 
> 2004-04-01 00:00:00 
> Time taken: 0.087 seconds, Fetched: 5 row(s) 
> hive> 
> We also have tested with an external table using TIMESTAMP type as shown 
> below 
> CREATE EXTERNAL TABLE za_dee.MIS_AUX_ITR 
> ( 
> `DDEBVAL`     TIMESTAMP, 
> `DFINVAL`     TIMESTAMP, 
> `NAUX`        VARCHAR(6), 
> `CDMNITR`     VARCHAR(3), 
> `CDERIMG`     VARCHAR(1), 
> `DDERIMG`     TIMESTAMP 
> ) 
> COMMENT 'Table DEE MIS_AUX_ITR' 
> STORED AS PARQUET 
> LOCATION 
> '/prod/ZA/dee/MIS_AUX_ITR'; 
> But we got the same behavior: an exception when trying to access data from an 
> Oracle DB.
> I tried this 
> CREATE EXTERNAL TABLE za_dee.MIS_AUX_ITR_V_PPROD_TS 
> ( 
> `DDEBVAL`     TIMESTAMP, 
> `DFINVAL`     TIMESTAMP, 
> `NAUX`        VARCHAR(6), 
> `CDMNITR`     VARCHAR(3), 
> `CDERIMG`     VARCHAR(1), 
> `DDERIMG`     TIMESTAMP 
> ) 
> COMMENT 'Table DEE MIS_AUX_ITR_V_PROD_TS' 
> STORED AS PARQUET 
> LOCATION 
> '/prod/ZA/dee/MIS_AUX_ITR_V_PPROD'; 
> and then i created and launched the sqoop job below 
> sqoop job --create import-za_dee-MIS_AUX_ITR_V-full-default-import-PPROD -- 
> import 
> --connect jdbc:netezza:/<server>:<port>/db 
> --username <user> 
> --password <password> 
> --table MIS_AUX_ITR_V 
> --as-parquetfile 
> --hive-import 
> --hive-overwrite 
> --hive-database za_dee 
> --hive-table MIS_AUX_ITR_V_PPROD_TS 
> -m 1 
> sqoop job --exec import-za_dee-MIS_AUX_ITR_V-full-default-import-PPROD 
> the raising error is the following 
> 16/04/11 17:15:09 INFO orm.CompilationManager: Writing jar file: 
> /tmp/sqoop-sqoop/compile/3533e18a81a65fb8eb88ec9cef2f4688/codegen_MIS_AUX_ITR_V.jar
>  
> 16/04/11 17:15:09 WARN manager.NetezzaManager: It looks like you are 
> importing from Netezza. 
> 16/04/11 17:15:09 WARN manager.NetezzaManager: This transfer can be faster! 
> Use the --direct 
> 16/04/11 17:15:09 WARN manager.NetezzaManager: option to exercise a 
> Netezza-specific fast path. 
> 16/04/11 17:15:17 INFO mapreduce.ImportJobBase: Beginning import of 
> MIS_AUX_ITR_V 
> 16/04/11 17:15:17 INFO manager.SqlManager: Executing SQL statement: SELECT 
> t.* FROM "MIS_AUX_ITR_V" AS t WHERE 1=0 
> 16/04/11 17:15:18 INFO manager.SqlManager: Executing SQL statement: SELECT 
> t.* FROM "MIS_AUX_ITR_V" AS t WHERE 1=0 
> 16/04/11 17:15:18 INFO manager.SqlManager: Executing SQL statement: SELECT 
> t.* FROM "MIS_AUX_ITR_V" AS t WHERE 1=0 
> 16/04/11 17:15:19 INFO hive.metastore: Trying to connect to metastore with 
> URI thrift://slhdm007.maif.local:9083 
> 16/04/11 17:15:19 INFO hive.metastore: Connected to metastore. 
> 16/04/11 17:15:19 ERROR tool.ImportTool: Imported Failed: Cannot convert 
> unsupported type: timestamp 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to