gpt4 book ai didi

mongodb - MongoDb 日期的 hive 类型转换

转载 作者:可可西里 更新时间:2023-11-01 16:57:12 57 4
gpt4 key购买 nike

我正在将 Hive 链接到具有日期的 MongoDb 集合。 MongoDB 集合的结构如下所示:

{
"name" : "Using Hive",
"validFrom" : ISODate("2014-11-04T00:00:00.000Z"),
"validTo" : ISODate("2016-01-30T00:00:00.000Z"),
"_id" : ObjectId("54da1c02ead8571c292901d3")
}

我将其添加到 Hive 中,如下所示:

CREATE TABLE certificate
(
name STRING,
validFrom TIMESTAMP,
validTo TIMESTAMP,
id STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/test.certificate');

当我选择时,日期为空:

hive> select * from certificate;
OK
Using Hive NULL NULL 54da1c02ead8571c292901d3
MongoDb NULL NULL 54da1c02ead8571c292901d4
Hadoop NULL NULL 54da1c02ead8571c292901d5

我知道 Hive 支持日期转换,我可以使用 CREATE 语句来确保正确转换日期吗?我将使用带有“有效起始日期小于今天且有效截止日期大于今天”等的查询,因此将这些列作为日期而不是字符串是至关重要的。

谢谢=D

最佳答案

指定列 validFrom 和 validTo 的映射。默认情况下,hive 将列名转换为小写。请检查以下是否有效。

CREATE TABLE certificate
(
name STRING,
validfrom TIMESTAMP,
validto TIMESTAMP,
id STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","validfrom":"validFrom","validto":"validTo"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/test.certificate');

关于mongodb - MongoDb 日期的 hive 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449200/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com