Size: a a a

2020 August 19

AS

Alex Semenyaka in ENOG
Собственно, тулзу написал :)
источник

LE

Leonid Evdokimov in ENOG
Alex Semenyaka
А, ты про настоящий греп. Не, я про питонячий регекс. С grep -F не сравнивал, надо будет сравнить. С -F он может оптимизировать, конечно.
Ага. Греп в подпроцессе даёт задействовать ещё один CPU и разбиение на строки из питона тоже частично убирает. Но это сумрачная несколько конструкция, конечно.
источник

AS

Alex Semenyaka in ENOG
И заодно сделал два фича реквеста, в Атлас и в Стат. Если пройдут, то можно будет просто из базы выгребать нужное, без танцев с дампами измерений
источник

AS

Alex Semenyaka in ENOG
Leonid Evdokimov
Ага. Греп в подпроцессе даёт задействовать ещё один CPU и разбиение на строки из питона тоже частично убирает. Но это сумрачная несколько конструкция, конечно.
Я думал субпроцесс завести, но забил. Потому что с bz2 и Trie код чище, как мне кажется. Но решил, что тут можно просто параллелить парсинг разных дампов, если нужно, и оно будет эффективнее.
источник

M

Mavensk in ENOG
ъ
источник

p

pragus in ENOG
Alex Semenyaka
Блин, я всего 20 раз сказал, что так делать вообще не надо. Нахрена ты его в памяти целиком распаковывал-то? В очередной раз напоминаю: bzip2 (как и gzip) был придуман для потокового сжатия-расжатия.
Ну это... Там же with open('dump.bz2', 'rb') as json.load(bz2.BZFile(f))
источник

AS

Alex Semenyaka in ENOG
Зачем?! Я же два раза выше приводил код, как это делать в потоке
источник

AS

Alex Semenyaka in ENOG
bz2handler=bz2.open(filehandler), и читаешь из bz2handler поток как из обычного файла
источник

AS

Alex Semenyaka in ENOG
Более того, если обрабатываешь с нормальной скоростью, то в качестве filehandler можешь подсунуть результат urllib.request.urlopen(), и локально вообще ничего не держать ни в памяти, ни на диске
источник

AS

Alex Semenyaka in ENOG
Два дня назад же это обсуждали :)
источник

AS

Alex Semenyaka in ENOG
Я тогда думал, что оно маленькими чанками читает, поэтому всё плохо. А оказалось, что это парсинг json
источник

AS

Alex Semenyaka in ENOG
Кстати. За сутки 9 августа было примерно 1500 разных измерений, которые относились к Беларуси, с примерно 890000 результатами. “Относились к Беларуси” - это или src, или dst был в префиксах беларуских LIRов. То есть, не 3 моих измерения, а 1500. Разных: и ping, и traceroute, и DNS, и NTP, и TLS - есть все виды. Данных - до фига. Кто б взялся их проанализировать только (ID измерений с разбиеним по типам все есть, если что, список префиксов - тоже).
источник

TH

Taras Heichenko in ENOG
Pavel Lunin
Херассе вы тут демократию развели. Я было уже позавчера думал его забанить, ни с кем не советуясь, да просто забыл
you made my day! 😄
источник

p

pragus in ENOG
Alex Semenyaka
Зачем?! Я же два раза выше приводил код, как это делать в потоке
а, у вас там набор строк в json, а не массив json ;)

у меня честный разбор https://data-store.ripe.net/datasets/atlas-daily-dumps/2020-08-09/http-2020-08-09T2300.bz2 происходит ~ 36 секунд
источник

BL

Boris Lytochkin in ENOG
в питоне используется Сшный код для чтения жсона или питонячий?
источник

p

pragus in ENOG
Boris Lytochkin
в питоне используется Сшный код для чтения жсона или питонячий?
сишный конечно же.
источник

p

pragus in ENOG
Alex Semenyaka
bz2handler=bz2.open(filehandler), и читаешь из bz2handler поток как из обычного файла
источник
2020 August 20

AS

Alex Semenyaka in ENOG
pragus
а, у вас там набор строк в json, а не массив json ;)

у меня честный разбор https://data-store.ripe.net/datasets/atlas-daily-dumps/2020-08-09/http-2020-08-09T2300.bz2 происходит ~ 36 секунд
http мало, так это просто
источник

AS

Alex Semenyaka in ENOG
И по-прежнему, хоть убей, не понимаю, зачем так делать, когда это криво
источник

p

pragus in ENOG
Alex Semenyaka
И по-прежнему, хоть убей, не понимаю, зачем так делать, когда это криво
эээ.. почему криво то? там стриминг же. например, вот это прожевало за 254 секунды на ноуте https://data-store.ripe.net/datasets/atlas-daily-dumps/2020-08-09/dns-2020-08-09T0000.bz2
источник