hive - 使用任意时间戳格式将数据导入 Hive

标签 hive

我有一个数据文件,我希望导入到 Hive 中,其中包含时间戳。时间戳的格式为 MM/dd/yyyy HH:mm:ss。

我想创建一个包含时间戳类型的表来保存这个值,但是我不知道如何直接导入数据。

我的解决方法是将我的日期作为字符串导入到临时表中,然后从这个临时表中读取数据到我的永久表中进行时间格式转换。

所以,我的整个两步加载函数看起来像这样:

create table tempTable(
timeField string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

--load data local here!

create table finalTable(
timeField timestamp
) stored as RCFILE;

insert into table finalTable select 
from_unixtime( unix_timestamp(timeField,'MM/dd/yyyy HH:mm') )
from tempTable;

所以最后我的问题:-)
这是“正确”或“最佳”的方式吗?我是否使用了低效/愚蠢的解决方法?

谢谢!

最佳答案

另一种解决方法是将数据文件的日期时间格式更改为 yyyy/MM/dd HH:mm:ss

然后它将数据作为时间戳数据类型直接转换为 hive 表。

希望这有帮助。

关于hive - 使用任意时间戳格式将数据导入 Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019174/

相关文章:

csv - 使用逗号分隔值和 .csv 或 .txt 文件格式将 Hive 输出到 s3。使用 sqoop 从 hive 导出到 s3 的替代方法也可以使用

hive - Metastore 中的分区,但 HDFS 中不存在路径

hadoop - 了解配置单元查询计划

sql - Hive - 计算数据库中每天的记录数

hadoop - Hive 操作的 Oozie 工作流程

java - Hive 查询不返回输出

hadoop - 按一种组合进行分组,然后再对其他项进行分组

hadoop - 如何强制顺序处理文件内容?

hadoop - 如何从sqlserver导入数据到hdfs/hive/hbase

unix - 如何在Cloudera中恢复覆盖的目录