我正在使用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秒
请提出任何建议。
答案 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/'