Как получить общий глобальный объект между мапперами в DISCO
Каждому из моих картостроителей нужен доступ к очень большому словарю. Можно ли как-нибудь избежать издержек, связанных с открытием каждой копией своей собственной копии, и вместо этого сделать так, чтобы все они указывали на один глобальный общий объект?
Любые предложения, относящиеся к DISCO или парадигме mapreduce, будут полезны.
1 ответ
Использовать хранилище значений ключей Redis
Может быть быстро установлен на Linux и Windows скомпилированные версии также доступны.
Пакет Python Redis позволит вам действительно легко писать, читать и обновлять значения.
Использование типа хэш-данных - это то, что вам лучше всего подходит, вы можете добавлять / редактировать новые значения в так называемых полях (ключ в терминологии словаря Python), это очень быстро и очень просто.
Это решение будет работать даже для независимых процессов. Вы даже можете обмениваться данными в Redis по сети, поэтому для сценария "карта / уменьшение" это может быть отличным вариантом.
Единственное, о чем вы должны заботиться при хранении и восстановлении значений, это то, что значения могут быть только строками, поэтому вам нужно сериализовать и десериализовать их. json.dumps и json.loads работают очень хорошо для этого.