Hive - 在整个列中永久更改日期和类型的正确方法

Hive - the correct way to permanently change the date and type in the entire column

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

$ hive --version is: 1.2.1000.2.6.5.0-292
Date format for the column is: '01-Jan-1995'
Data type of column is: 'string'
ACID Transactions is 'On'

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

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 实现上述目标的最简单方法是什么?通过复制和转换列或整个 table?

试试这个:

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