我正在将 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/