我正在用hdp沙盒做一些关于Hive的研究。
我有一个csv文件,日期格式为9-11-2015,我想创建一个时间戳列来存储数据。命令如下所示:
create external table product (
productid string,
...
startdate timestamp)
row format delimited fields terminated by ';'
location '/poc/product' TBLPROPERTIES('skip.header.line.count'='1');
我得到了startdate的空值,因为预期的格式是yyyy-mm-dd。这是一个etl问题,我想知道在不接触数据源的情况下解决这个转换的正确方法是什么。
我在想我有什么选择。我可以做到以下几点:
使用此字段的字符串列创建外部表。
在hive或pig上进行转换并生成另一个文件/表。
不过,我不太喜欢这种方法。有什么想法/选择吗?你怎么解决这个问题?
1条答案
按热度按时间7ajki6be1#
我目前为止最好的选择。使用字符串字段创建原始表。然后创建一个视图
创建视图产品作为选择产品ID,concat(从unixtime(unix时间戳(startdate,'dd-mm-yyyy'),'yyyy-mm-dd'),'00:00:00.000')作为产品的开始日期
这是正确的方法吗?