首页 > 解决方案 > Hive - 在整个列中永久更改日期和类型的正确方法

问题描述

如果有人能在这里一步一步地解释将日期格式和列类型从字符串更改为日期的过程,在通过 Hive View 导入到 HDP 2.6.5 的表中应该是什么样子,我将不胜感激。数据源是著名的 MovieLens 100K 数据集('u.item' 文件),来自: https ://grouplens.org/datasets/movielens/100k/

$ hive --version 是:
1.2.1000.2.6.5.0-292 列的日期格式是:'01-Jan-1995'
列的数据类型是:'string'
ACID Transactions 是 'On'

最终,我想将整个列中的数据永久转换为正确的 Hive 格式“yyyy-MM-dd”,并将下一列类型转换为“日期”。
我之前看过十几个关于类似问题的主题。当然,问题不在于这样显示列,只需使用以下命令即可轻松完成:

SELECT from_unixtime(unix_timestamp(prod_date,'dd-MMM-yyyy'),'yyyy-MM-dd') FROM moviesnames;

问题是最终以这种方式写下来。不幸的是,尽管在 Hive 配置中包含原子操作,但这不能通过以下方式通过 UPDATE 完成。

UPDATE moviesnames SET prodate = (select to_date(from_unixtime(UNIX_TIMESTAMP(prod_date,'dd-MMM-yyyy'))) from moviesnames);

使用 Hive-SQL 实现上述目标的最简单方法是什么?通过复制和转换一列或整个表?

标签: datehadoophiveambarihdp

解决方案


试试这个:

UPDATE moviesnames SET prodate = to_date(from_unixtime(UNIX_TIMESTAMP(prod_date,'dd-MMM-yyyy')));

推荐阅读