mongodb - MongoDb 日期的 hive 类型转换

标签 mongodb date hadoop hive hiveql

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

相关文章:

javascript - 在 Mongoose 模式默认日期值中将月份添加到当前日期

hadoop - 如何将多个作业提交到 hadoop 集群

hadoop - 无法启动 ResourceManager (capacity-scheduler.xml) 找不到 hadoop 2-6.0

python - 最新的 django-mongodb-engine

Mongodb Atlas 图表 - 在不同列中显示分组计数

javascript - 更新子文档后保存文档mongoose,mongodb

hadoop - 如何通过 StarGate REST API 向 HBase 中插入数据

mongoDB 地理空间查询 $geoWithin 出现错误 'Loop is not closed'

mysql - DATE() MONTH() 等函数减慢查询速度

java - 如何使用 Mask 从 JFormattedTextField 获取日期