Слить оплог mongodb в spark sql? - PullRequest
       3

Слить оплог mongodb в spark sql?

0 голосов
/ 09 января 2020

Допустим, у нас есть таблица с именем my_collection_oplog, в которой есть столбцы: id, deleted, data, ts, где data - строка формата json, означает весь документ (для вставки или начального снимка или replaceOne) или документа исправления (для обновления).

Мы считаем, что мы можем использовать следующие SQL, используя UDF для объединения oplog

select id, merge_oplog(collect_list(struct(deleted, data, ts))) doc from my_collection_oplog group by id

Однако мы думаем, что это будет проблемой, когда какая-либо группа слишком велика (т. Е. Какой-то документ обновляется слишком много раз), потому что нам нужно загрузить все oplog в каждой группе в память и отсортировать их.

Есть ли лучший способ сделать это? (Укажите на любую ошибку в вышеприведенном посте, также приветствуется)


Только для тех, кто не знает формат mon go oplog: оплог имеет два типа: первый - весь документ Например,

{
    "_id": 1
    "name": "a",
    "type": "b"
}

Второй - это документ патча, например,

{
    "$set": {
        "name": "c"
    },
    "$unset": {
        "type": 1
    }
}
...