Как получить общий глобальный объект между мапперами в DISCO

Каждому из моих картостроителей нужен доступ к очень большому словарю. Можно ли как-нибудь избежать издержек, связанных с открытием каждой копией своей собственной копии, и вместо этого сделать так, чтобы все они указывали на один глобальный общий объект?

Любые предложения, относящиеся к DISCO или парадигме mapreduce, будут полезны.

1 ответ

Использовать хранилище значений ключей Redis

Может быть быстро установлен на Linux и Windows скомпилированные версии также доступны.

Пакет Python Redis позволит вам действительно легко писать, читать и обновлять значения.

Использование типа хэш-данных - это то, что вам лучше всего подходит, вы можете добавлять / редактировать новые значения в так называемых полях (ключ в терминологии словаря Python), это очень быстро и очень просто.

Это решение будет работать даже для независимых процессов. Вы даже можете обмениваться данными в Redis по сети, поэтому для сценария "карта / уменьшение" это может быть отличным вариантом.

Единственное, о чем вы должны заботиться при хранении и восстановлении значений, это то, что значения могут быть только строками, поэтому вам нужно сериализовать и десериализовать их. json.dumps и json.loads работают очень хорошо для этого.

Другие вопросы по тегам