Как загрузить большой JSON файл в Pandas Dataframe - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть 16 JSON файлов, каждый из которых имеет размер около 14 ГБ. Я попробовал следующий подход, чтобы прочитать их построчно.

with open(file_name, encoding="UTF-8") as json_file:
cursor = 0
for line_number, line in enumerate(json_file):
    print ("Processing line", line_number + 1,"at cursor index:", cursor)
    line_as_file = io.StringIO(line)
    # Use a new parser for each line
    json_parser = ijson.parse(line_as_file)
    for prefix, type, value in json_parser:
        #print ("prefix=",prefix, "type=",type, "value=",value,ignore_index=True)
        dfObj = dfObj.append({"prefix":prefix,"type":type,"value":value},ignore_index=True)
    cursor += len(line)

Моя цель - загрузить их во фрейм данных pandas для выполнения некоторых операций поиска.

Проблема заключается в том, что для чтения этого файла требуется много времени.

Есть ли другой оптимальный подход для достижения этой цели?

1 Ответ

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

Вы можете передать json_file только один раз непосредственно в i json .parse вместо чтения отдельных строк из него. Если ваши файлы имеют более одного значения JSON верхнего уровня, вы можете использовать опцию multiple_value=True (см. здесь для описания).

Также убедитесь, что вы используете актуальный i json, и что используется используемый бэкэнд yajl2_c (в i json 3 вы можете увидеть, какой бэкэнд выбран, посмотрев на ijson.backend). Информацию о бэкэндах смотрите здесь .

...