2014-07-21 4 views
0

В http://www.githubarchive.org/, который предоставил Илья Григорик, я обнаружил, что во многих gz-файлах некоторые последовательные события регистрируются в одном файле.Почему последовательные события jsons попадают в одну строку в некоторых пакетах в githubarchive?

, например, в 2011-03-15-21.json.gz

Чтобы получить выше сделать: Wget http://data.githubarchive.org/2011-03-15-21.json.gz

В этом GZ, например, если вы ищете идентификатор 1484832, вы можете найти что 2 последовательных событий (jsons) находятся в той же строке см http://codebeautify.org/jsonviewer/2cb891

два jsons в одной строке представляет собой сочетание

http://codebeautify.org/jsonviewer/c7e18e

и

http://codebeautify.org/jsonviewer/945d56

.

Какое влияние? Когда я загружал каждую строку и загружал ее с помощью python (почему python? Потому что я чувствовал, что python удобен в работе с jsons) json.loads, он сказал, что он недействителен, поскольку это комбинация двух jsons.

Вопрос:

1) Как вы решить такого рода ошибок при обработке, что архивные данные GitHub?

2) У меня уже есть данные в моем местном. так как я могу преодолеть эту проблему. Должен ли я написать код, специфичный для этого случая, для преодоления? код я написал, было как

jsonlist = line.split('}{') 
json.loads(jsonlist[0] + '}', "ISO-8859-1") # load and navigate through this json 
json.loads('{' + jsonlist[1], "ISO-8859-1") # load and navigate through this json 

ответ

0

Я получил решение здесь

1) Как вы решить такого рода ошибок при обработке, что архивные данные GitHub? https://github.com/vadasg/githubarchive-parser/blob/master/src/FixGitHubArchiveDelimiters.rb

. Этот сценарий устраняет проблемы с двумя или более событиями, появляющимися в одной строке. Итак, теперь после запуска этого скрипта jsons появляются в разных строках.

2) У меня уже есть данные в моем местном. так как я могу преодолеть эту проблему. Должен ли я написать код, специфичный для этого случая, для преодоления? код, который я написал, был похож на Этот сценарий устраняет необходимость написания кода, упомянутого выше.

Примечание:

Похожие вопросы найдены на github archive project в GitHub

  1. https://github.com/igrigorik/githubarchive.org/issues/53

  2. https://github.com/igrigorik/githubarchive.org/issues/17

ВНИМАНИЕ:

Когда я запускал этот скрипт, я получил ошибку, связанную с используемой кодировкой. Потому что по умолчанию строка Yajl::Parser.parse(jsonInputFile) проверяет, соблюдают ли символы, которые она анализирует, для кодирования UTF-8, если не будут выдавать ошибки. Поскольку данные github также содержат символы не UTF-8, эта ошибка также будет выбрана в нашем случае. Таким образом, чтобы обойти эту проблему (или может быть исправление) я ставлю его как

Yajl::Parser.parse(jsonInputFile, :check_utf8 => false) 

для сомнения относятся документы: http://rdoc.info/github/brianmario/yajl-ruby/Yajl/Parser.parse

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

  • Нет связанных вопросов^_^