2015-04-27 6 views
0

Я работаю над Yelp Dataset Challenge. Данные состоят из файлов большого сына (до 1 ГБ, 1 мм + линий). Я бы хотел сделать некоторые аналитики данных, сравнивая данные между файлами, например. связывая обзор в файле обзора с бизнесом в бизнес-файле.Разбор больших файлов JSON

У меня есть полная свобода относительно того, какую платформу/язык программирования использовать. Каков наиболее эффективный способ сделать это, чтобы я мог быстро выполнять быстрый поиск?

Формат сына очень прост. Ниже приведен пример. Такие поля, как «user_id», уникальны и могут быть перекрестно привязаны к другим файлам.

{"votes": {"funny": 0, "useful": 2, "cool": 1}, 
"user_id": "Xqd0DzHaiyRqVH3WRG7hzg", 
"review_id": "15SdjuK7DmYqUAj6rjGowg", 
"stars": 5, "date": "2007-05-17", 
"text": "dr. goldberg offers everything i look for in a general practitioner. he's nice and easy to talk to without being patronizing; he's always on time in seeing his patients; he's affiliated with a top-notch hospital (nyu) which my parents have explained to me is very important in case something happens and you need surgery; and you can get referrals to see specialists without having to see him first. really, what more do you need? i'm sitting here trying to think of any complaints i have about him, but i'm really drawing a blank.", 
"type": "review", 
"business_id": "vcNAWiLM4dR7D2nwwJ7nCA"} 
+0

Я знаю, что это не поможет вам сказать это, но JSON - очень плохой формат для больших массивов данных. Если структура проста, CSV будет иметь больше смысла; если комплексный, множество инструментов для работы с XML кажутся глупыми, чтобы игнорировать. – IMSoP

+0

Это не мои данные. Это от Yelp. Будут ли все быстрее, если я конвертирую файлы в csv? –

+0

Да, немного бесполезно, извините. Однако обработка файлов, как если бы они уже были CSV, действительно может быть жизнеспособным подходом, в зависимости от точного формата. Возможно, было бы неплохо отредактировать пример формата в вопросе и быть максимально конкретным с тем, что вы хотите достичь. Открытые вопросы, как правило, плохо воспринимаются здесь, потому что они не подходят к вопросу & хорошо отвечайте, и в конечном итоге расширенная дискуссия и отсутствие «окончательного» ответа. – IMSoP

ответ

0

Сначала импортируйте все данные в базу данных.

У вас есть возможность полностью сгладить вещи на несколько таблиц (если вы получаете «вложенные» объекты в JSON), или вы можете сохранить некоторые части как JSON, особенно если вы используете базу данных, которая может анализировать/индексировать ее (как Postgresql).

Выбор базы данных полностью зависит от вас. Вы могли бы использовать классическую базу данных SQL (Postgresql, Mysql, SQL Server, SQLite ...), или вы могли бы использовать документально-ориентированную/noSQL базу данных, такую ​​как MongoDB (которая поддерживает JSON-подобные данные). Все дело в том, что вы будете делать с данными (и с тем, с чем вам удобно).

Вы можете делать все, что вы хотите с данными ...

Обратите внимание, что если один файл> 1 Гб, вы, возможно, придется использовать некоторые пользовательские инструменты, чтобы сделать импорт, как загрузка все сразу в памяти (через обычно функции JSON-декодирования вашего любимого языка), вероятно, будет слишком много. Однако будьте осторожны, вы все равно хотите правильно разобрать все данные, поэтому избегайте упрощенных разделов или регулярных выражений. Вы можете посмотреть решения, перечисленные в этой теме: Is there a streaming API for JSON?

+0

Только что заметил, что это был старый вопрос, который был нажат на верх с помощью редактирования. OP, вероятно, больше не волнует (особенно, поскольку вызов заканчивается через 2 дня), но это может быть полезно для других. – jcaron

Смежные вопросы