hive失败,异常java.io.IOException:java.lang.ClassCastException:java.sql.Timestamp无法强制转换为java.sql.Date

时间:2016-03-21 04:12:11

标签: date hadoop hive apache-pig cloudera

我正在使用pig 0.15,将文件存储为ORC格式,如下所示。

loading_data= Load '/user/location/emp.csv' using PigStorage('\u241C') AS (
empno:long
,ename:chararray
,job:chararray
,mgr:float
,hiredate:chararray
,sal:bigdecimal
,comm:bigdecimal
,deptno:int
,flag:chararray
);

processed_data = FOREACH loading_data GENERATE
empno
,ename
,job
,mgr
,ToDate(hiredate,'MM/dd/yyyy HH:mm') as (hiredate:datetime)
,sal
,comm
,deptno
,flag;



store processed_data into '/user/myfolder/newLocation' using OrcStorage();

现在我正在创建如下所示的HIVE表

CREATE EXTERNAL Table emp123(
  empno    BIGINT,
  ename    STRING,
  job      String,
  mgr      FLOAT,
  hiredate DATE,
  sal      DECIMAL(15,2),
  comm     DECIMAL(10,2),
  deptno   int,
  flag     String
)
comment 'EMP test table'
stored as ORC
location '/user/myfolder/newLocation/'

现在我想唠叨他下面的查询会得到一个错误。 蜂房>从emp123中选择*; 行

  

异常失败   java.io.IOException:java.lang.ClassCastException:java.sql.Timestamp   无法转换为java.sql.Date所用时间:1.478秒

请提出任何建议。

1 个答案:

答案 0 :(得分:0)

对HIVE表定义使用timestamp而不是date。您的PigScript有hireddate列的时间部分.Hive Date类型没有时间组件。

CREATE EXTERNAL Table emp123(
              empno    BIGINT,
              ename    STRING,
              job      String,
              mgr      FLOAT,
              hiredate timestamp,
              sal      DECIMAL(15,2),
              comm     DECIMAL(10,2),
              deptno   int,
              flag     String
)
comment 'EMP test table'
stored as ORC
location '/user/myfolder/newLocation/'