Разобрать большое количество JSON данных в python - PullRequest
0 голосов
/ 04 мая 2020

Я ищу эффективный способ - с точки зрения памяти и скорости - для анализа большого объема данных JSON (порядка нескольких сотен МБ) в python.

I посмотрел на пакет i json: https://pypi.org/project/ijson/ и поэкспериментировал с его функцией разбора, но синтаксический анализатор событий для l oop выглядит очень медленным, если бы я анализировал что-то в середине или внизу JSON.

Ниже приведен образец аналогичной json структуры, которую я имею. JSON представляет данные нескольких сотен веб-сайтов, поэтому data.items.website может стать очень большим, как и data.items.ids. При такой большой структуре - я обнаружил, что i json анализатор событий для l oop работает очень медленно, если бы мне нужно было получать информацию о некоторых данных в середине или внизу data.items.website или data.items. ids.

{
    "data": {
        "items": {
                "website": [
                    [
                        "abc.com",
                        [
                            [
                                "data1",
                                {
                                    "type1": 10,
                                    "type2": 11
                                }
                            ],
                            [
                                "data2",
                                {
                                    "type1": 100,
                                    "type2": 150
                                }
                            ],
                            [
                                "data3",
                                {
                                    "type1": 40,
                                    "type2": 50
                                }
                            ]
                        ]
                    ]
                 ]
        },
            "ids": [
                [
                    "id1",
                    1
                ],
                [
                    "id2",
                    2
                ]
             ]
       }
}
for prefix, event, value in parser:
    if prefix.startswith('data.items.ids'):
        print(f"prefix {prefix}, event {event}, value {value}")

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

Может ли кто-нибудь помочь?

...