【问题标题】:hive Failed with exception java.io.IOException:java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.sql.Datehive 失败并出现异常 java.io.IOException:java.lang.ClassCastException: java.sql.Timestamp 无法转换为 java.sql.Date
【发布时间】:2018-05-29 19:38:12
【问题描述】:

我使用的是 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 秒

请有任何建议。

【问题讨论】:

    标签: date hadoop hive apache-pig cloudera


    【解决方案1】:

    在 HIVE 表定义中使用时间戳而不是日期。您的 PigScript 有hireddate 列的时间部分。Hive 日期类型没有时间组件。

    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/'
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多