date - 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 实现上述目标的最简单方法是什么?通过复制和转换一列或整个表?
解决方案
试试这个:
UPDATE moviesnames SET prodate = to_date(from_unixtime(UNIX_TIMESTAMP(prod_date,'dd-MMM-yyyy')));
推荐阅读
- python - 带有外键查找的 Django 模板表单集
- dompdf - PDF中没有表格边框
- node.js - 在托管的 plesk 服务器上运行 node,js(使用 windows IISnode)
- cordova - Framework7 + Cordova | 使 iframe 打开本地文件
- arduino - 我想使用入口门自动关闭灯来实现家庭自动化
- python - 我可以为 Python 中的 SVR 代码中的这个错误做些什么
- python - Python curve_fit 不适合正确的罪
- flutter - Flutter 通过 Gesture Detection Details 来降低 Stack 小部件
- python - 我的 while 循环执行但输出不是预期的。为什么?
- python - 使用 TCP 协议发送拆分消息