从CSV创建外部表Hive - 时间戳问题

时间:2015-11-17 22:34:01

标签: csv hadoop hive etl

我正在使用HDP Sandbox对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问题,我想知道在不触及数据源的情况下解决此转换的正确方法是什么。

我想知道我的选择。 我可以做到以下几点:

  1. 使用此字段的字符串列创建外部表。
  2. 在Hive或Pig上进行转换并生成另一个文件/表。
  3. 我不太喜欢这种方法。任何想法/替代品?你会如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

迄今为止我最好的选择。使用字符串字段创建原始表。然后创建一个像

的视图

创建视图product_ as 选择productid, concat(from_unixtime(unix_timestamp(startdate,'dd-MM-yyyy'),'yyyy-MM-dd'),'00:00:00.000')作为startdate 来自产品

这是正确的方法吗?