каждые данные в mongodb local.oplog.rs, это стандартная структура bsonobject

Я использую spark mongo-connector для синхронизации данных из коллекции mongodb в файл hdfs, мой код отлично работает, если коллекция читается через mongos, но когда дело доходит до local.oplog.rs, коллекция реплик может быть прочитана только через mongod, это дает мне исключение:

Вызвано: com.mongodb.hadoop.splitter.SplitFailedException: невозможно рассчитать разделение входных данных: не удалось найти индекс по ключу разделения {_id: 1}

Я думаю, что структура данных между oplog.rs и обычной коллекцией отличается, oplog.rs не имеет свойства «_id», поэтому newAPIHadoopRDD не может нормально работать, верно?


person MayI    schedule 25.05.2016    source источник


Ответы (1)


Да, структура документа в oplog.rs немного отличается. Вы найдете свой фактический документ в поле «o» документа oplog.

Пример оплог-документа:

{
"_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.

      }

}

Используйте «ns» и «o» в oplog.rs, чтобы получить ожидаемую коллекцию и документ.

person Probal    schedule 27.01.2017
comment
@user6376657 user6376657 Если это поможет, не могли бы вы отметить его как лучший ответ? - person Probal; 02.05.2017