如何在Apache Hive中插入日期,布尔值?

时间:2018-08-10 08:00:59

标签: apache hive bigdata hiveql

这是我的样本数据集。

#cust_id,  #cust_name, #odr_date,#shipdt,#Courer,#recvd_dt,#returned or not,#returned dt,#reson of return
GGYZ333519YS,Allison,01-01-2017,03-01-2017,Fedx,06-01-2017,**no**,null,null
GGYZ333519YS,Allison,08-01-2017,10-01-2017,Delhivery,13-01-2017,**yes**,15-01-2017,Damaged Item

并创建表结构。

create table order
( 
cust_id string,
cust_name string,
order_date date,
ship_date date,
courier_name string,
received_date date,
is_returned boolean,
returned_date date,
reason string
)
row format delimited
fields terminated by ','
lines terminated by '\n'
stored as textfile;

使用load命令将数据加载到订单表中。为日期字段和布尔字段columun获取NULL。任何想法?如何解决这个问题呢 。

1 个答案:

答案 0 :(得分:1)

日期应采用兼容格式'yyyy-MM-dd',以正确插入DATE。并且BOOLEAN应该是(TRUE,FALSE)之一。

解决方案是将列定义为STRING,并在选择过程中对其进行转换,或者在将输入数据加载到表之前对其进行转换。

如果列定义为“ STRING”,则可以在选择期间转换数据:

select
      from_unixtime(unix_timestamp( returned_date ,'dd-MM-yyyy'), 'dd-MMM-yyyy') as returned_date,
      case when is_returned like '%no%' then false
           when is_returned like '%yes%' then true
           --else will be null by default
       end as is_returned