Чтение большого набора данных JSON с использованием панд с кусками - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу прочитать json размером 6 ГБ (а у меня другой - 1,5 ГБ), и я попытался нормально читать с пандами (только с pd.read_json), и ясно, что память умирает.Затем я попытался с параметром chunksize, например:

with open('data/products.json', encoding='utf-8') as f:
    df = []
    df_reader = pd.read_json(f, lines=True, chunksize=1000000)
    for chunk in df_reader:
        df.append(chunk)
data = pd.read_json(df)

Но это тоже не работает, и мой компьютер умирает в первую минуту работы (на самом деле 8 ГБ ОЗУ).

1 Ответ

0 голосов
/ 22 ноября 2018

Dask и Pyspark имеют решения для информационных фреймов, которые почти идентичны pandas.Pyspark - это API-интерфейс Spark, распределяющий рабочие нагрузки между виртуальными машинами Java.Dask специально предназначается для нехватки памяти на одном сценарии использования рабочей станции и реализует API данных.

Как показано здесь read_json API в основном проходит через панды.

Когда вы переносите свой пример кода из вопроса, я бы отметил две вещи:

  1. Я подозреваю, что вам не понадобится диспетчер контекста файла, так как нужно просто передать путь к файлувероятно, работает.

  2. Если у вас есть несколько записей, Dask поддерживает BLOB-объекты, такие как "путь / к / файлам / *. json"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...