mongodb local.oplog.rs中的每个数据,是否是标准的bsonobject结构
each data in mongodb local.oplog.rs, is it a standard bsonobject structure
我使用 spark mongo-connector 将数据从 mongodb 集合同步到 hdfs 文件,
如果通过 mongos 读取集合,我的代码工作正常,但是当涉及到 local.oplog.rs 时,副本集合只能通过 mongod 读取,它给了我异常:
原因:com.mongodb.hadoop.splitter.SplitFailedException:无法计算输入拆分:找不到拆分键上的索引 { _id: 1 }
我认为oplog.rs和普通集合的数据结构不同,oplog.rs没有"_id"属性,所以newAPIHadoopRDD不能正常工作,是吗对吗?
是的,oplog.rs 中的文档结构有点不同。您将在 oplog 文档的 "o" 字段中找到您的实际文档。
示例操作日志文档:
{
"_id" : ObjectId("586e74b70dec07dc3e901d5f"),
"ts" : Timestamp(1459500301, 6436),
"h" : NumberLong("5511242317261841397"),
"v" : 2,
"op" : "i",
"ns" : "urDB.urCollection",
"o" : {
"_id" : ObjectId("567ba035e4b01052437cbb27"),
....
.... this is your original document.
}
}
使用 oplog.rs 的 "ns" 和 "o" 得到你期望的 collection 和文档。
我使用 spark mongo-connector 将数据从 mongodb 集合同步到 hdfs 文件, 如果通过 mongos 读取集合,我的代码工作正常,但是当涉及到 local.oplog.rs 时,副本集合只能通过 mongod 读取,它给了我异常:
原因:com.mongodb.hadoop.splitter.SplitFailedException:无法计算输入拆分:找不到拆分键上的索引 { _id: 1 }
我认为oplog.rs和普通集合的数据结构不同,oplog.rs没有"_id"属性,所以newAPIHadoopRDD不能正常工作,是吗对吗?
是的,oplog.rs 中的文档结构有点不同。您将在 oplog 文档的 "o" 字段中找到您的实际文档。
示例操作日志文档:
{
"_id" : ObjectId("586e74b70dec07dc3e901d5f"),
"ts" : Timestamp(1459500301, 6436),
"h" : NumberLong("5511242317261841397"),
"v" : 2,
"op" : "i",
"ns" : "urDB.urCollection",
"o" : {
"_id" : ObjectId("567ba035e4b01052437cbb27"),
....
.... this is your original document.
}
}
使用 oplog.rs 的 "ns" 和 "o" 得到你期望的 collection 和文档。