hive - 有没有办法在 Hive CREATE TABLE 语句本身中为传入数据指定日期/时间戳格式?
问题描述
我有一个 CSV 文件,其中包含以下格式的日期和时间戳值。例如:
Col1|col2
01JAN2019|01JAN2019:17:34:41
但是,当我在 create 语句中将 Col1 定义为 Date 并将 Col2 定义为 Timestamp 时,Hive 表NULL
会在我查询时简单地返回。
CREATE EXTERNAL TABLE IF NOT EXISTS my_schema.my_table
(Col1 date,
Col2 timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘|’
STORED AS TEXTFILE
LOCATION 'my_path';
相反,如果我简单地定义数据类型,string
那么它就可以工作。但这不是我希望我的桌子的样子。
我希望表能够以正确的类型读取传入的数据。我怎样才能做到这一点?是否可以用CREATE
语句本身定义传入数据的预期数据格式?
有人可以帮忙吗?
解决方案
从 Hive 1.2.0 开始,可以提供额外的 SerDe 属性"timestamp.formats"
。有关更多详细信息,请参阅此 Jira:HIVE-9298
ALTER TABLE timestamp_formats SET SERDEPROPERTIES ("timestamp.formats"="ddMMMyyyy:HH:mm:ss");
推荐阅读
- laravel - 在代理后面运行 Laravel 本地服务器
- r - 如何遍历矩阵并更改某些元素?
- c - 带有 vfork() 和 -lpthread 的孙子的 getpid() 结果不正确
- c# - 如何在 C# 中验证多部分压缩(即 zip)文件是否包含所有部分?
- python - 我怎样才能自动登录 sahbinden.com
- c - C 结构信息隐藏(不透明指针)
- flutter - 当应用程序处于后台时,我可以隐藏 Flutter 应用程序的内容吗?
- javascript - 如何在 VSCode 中启用多行 JS 字符串折叠(隐藏)?
- javascript - 仅针对一个组件实现路由器转换
- javascript - 如何为外部和内部元素添加不同的事件处理程序?