Разбить json файл на части

У меня есть большой файл JSON, около 5 миллионов записей и размер файла около 32 ГБ, который мне нужно загрузить в наше хранилище данных Snowflake. Мне нужно разбить этот файл на куски по 200 тыс. Записей (около 1,25 ГБ) на файл. Я хотел бы сделать это либо в Node.JS, либо в Python для развертывания в функции AWS Lambda, к сожалению, я пока не написал ни одного из них. У меня есть С# и большой опыт работы с SQL, и изучение моего узла и python входит в мой список дел, так почему бы не погрузиться прямо в это, верно !?

Мой первый вопрос: "Какой язык лучше подходит для этой функции? Python или Node.JS?"

Я знаю, что не хочу читать весь этот файл JSON в память (или даже выходной файл меньшего размера). Мне нужно иметь возможность "потоком" входить и выходить в новый файл на основе количества записей (200 КБ), правильно закрывать объекты json и продолжать работу в новом файле еще 200 КБ и т.д. Я знаю, что Node может сделать это, но если Python также может сделать это, я чувствую, что было бы легче быстро начать использовать для других вещей ETL, которые я буду делать в ближайшее время.

Мой второй вопрос: "Исходя из вашей рекомендации, приведенной выше, можете ли вы также порекомендовать, какие модули мне требуются/импортировать, чтобы помочь мне начать работу? Прежде всего, это касается того, чтобы не извлекать весь файл json в память? Может быть, некоторые советы, рекомендации или" Как бы вы это сделали? И если вы чувствуете себя действительно щедрым, приведите пример кода, который поможет мне в этом разобраться?

Читайте также  Посмотреть место по координатам широты и долготы

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

Отвечая на вопрос, будет ли Python или Node лучше для этой задачи, будет мнение, и нам не позволено высказывать свое мнение о Stack Overflow. Вы должны решить, что у вас больше опыта и с чем вы хотите работать — Python или Node.

Если вы идете с Node, есть некоторые модули, которые могут помочь вам в этой задаче, которые выполняют потоковой анализ JSON. Например. эти модули:

Если вы идете с Python, здесь также есть потоковые JSON-парсеры:

Используйте этот код в командной строке linux

Есть объект json такого вида:

Это возврат $.post из обработчика на PHP.

Как вывести каждую строку отдельно циклом?

И for пробовал, и for..in.

Ключ — число, и из-за этого тоже загвоздка у меня. Как обратиться к price при >?

3 ответа 3

Пример итерации и получение значения по ключу

Для $.post укажите тип данных который принимает callback

Так. Есть у нас объект.

Отвечу на последний вопрос для начала.

Чтобы обратиться к элементу с числовым ключом — достаточно записать это так, как-будто вы обращаетесь к ассоциативному массиву по ключу. Т.е. к элементу с ключом 4 можно обратиться так: test[4]

Теперь к первому вопросу. Так как это не упорядоченный массив, где ключи начинаются с 0, то конечно проще сделать цикл for..in, который пробегает по всем элементам.

Он будет выглядеть просто:

где i — это ключ, и, как следует из первой части моего ответа: test[i] обращение к элементу объекта по ключу.

В итоге в консоли можно будет увидеть

Читайте также  Рейд это в играх

Ну и конечно пробегаясь в цикле, чтоб достать значения можно обращаться уже к ключам через привычную точку: test[i].id или test[i].price и так далее

К примеру есть JSON:
var jsonString = ‘
[
<
"_id":"556598a1e1a9451226304bad",
"date":"2015-05-05T19:00:00.000Z",
"income":5000,
"outcome":0,
"profit":100
>,
<
"_id":"556598b4e1a9451226304bae",
"date":"2015-05-06T19:00:00.000Z",
"income":0,
"outcome":5000,
"profit":300
> ] ;

Мне нужно в таком виде:
Массив a = [Дата, 5000, 0, 100];
Массив b = [Дата, 0, 5000, 300];
Как это сделать? Ничего придумать не могу.

Ссылка на основную публикацию
Adblock
detector