Большой питон словарь.Хранение, загрузка и запись в него - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть большой словарь значений Python (около 50 ГБ), и я сохранил его в виде файла JSON.У меня возникают проблемы с эффективностью, когда дело доходит до открытия файла и записи в файл.Я знаю, что вы можете использовать ijson для эффективного чтения файла, но как я могу написать в него эффективно?

Должен ли я использовать словарь Python для хранения своих данных?Есть ли предел тому, насколько большим может быть словарь Python?(словарь станет больше).

Данные в основном хранят длину пути между узлами в большом графике.Я не могу сохранить данные в виде графика, потому что поиск соединения между двумя узлами занимает слишком много времени.

Любая помощь будет высоко ценится.Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Хотя это будет действительно зависеть от того, какие операции вы хотите выполнить с вашим сетевым набором данных, вы можете подумать о том, чтобы сохранить его как pandas Dataframe и затем записать его на диск, используя Parquet или Arrow.

Эти данные могутзатем загрузите его в networkx или даже в Spark (GraphX) для любых операций, связанных с сетью.

Паркет сжимается по столбцам и значительно ускоряет чтение и запись в файлы, особенно для больших наборов данных.

ИзДокумент Pandas:

Apache Parquet обеспечивает секционированную двоичную столбчатую сериализацию для фреймов данных.Он предназначен для эффективного чтения и записи фреймов данных и упрощения обмена данными между языками анализа данных.Parquet может использовать различные методы сжатия, чтобы максимально уменьшить размер файла, сохраняя при этом хорошую производительность чтения.

Parquet разработан для точной сериализации и десериализации DataFrame, поддерживая все dty-типы панд,включая расширение dtypes, например datetime с tz.

Подробнее читайте здесь: Pandas Parquet

0 голосов
/ 25 декабря 2018

попробуйте использовать его с пандами: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html

pandas.read_json(path_or_buf=None, orient=None, typ='frame', dtype=True, convert_axes=True, convert_dates=True, keep_default_dates=True, numpy=False, precise_float=False, date_unit=None, encoding=None, lines=False, chunksize=None, compression='infer')
Convert a JSON string to pandas object

это очень легкая и полезная библиотека для работы с большими данными

...