Показать полную графическую версию : как работать с большими файлами
r-studio
07-02-2020, 12:57
есть файл весит хрен знает сколько , сотни гигов, в этом файле одни цифры, их надо упорядочить от 0 и до победного конца
вопрос как это сделать, чтобы сервак совсем не крякнуть
как сделать сортировку это всего лишь полстрочки в питоне (sort функция)
вопрос если просто это сделать сервер умрет.
Подскажите, как бы мне разделить на батчи целиковый файл, чтобы его просортировать, да так,чтобы сервер не убить и сколько примерно по времени такой файл будет отрабатывать. Как бы минимзировать вычислительную сложность ,чтобы он не 100 лет думал?
DJ Mogarych
07-02-2020, 14:12
А толку бить на куски (https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Split-large-log-6f2c4da0), если потом всё равно надо отсортированные куски составлять вместе и сортировать заново?
если канал резиновый, то можно купить какой-нибудь облачный сервер (сейчас хоть почасовая оплата доступна) и загрузить его, пускай "развлекается"
DJ Mogarych
07-02-2020, 14:35
Ну или можно попробовать через Powershell Core 7, очень эффективная и быстрая штука.
Непонятно только, что за сервер и что за файл, и есть ли требования к инструменту сортировки - питон там, удав или ещё что.
сть файл весит хрен знает сколько , сотни гигов, в этом файле одни цифры »
т.е. текстовый файл?!
раскидать содержимое по отдельным файлам основываясь на паре старших разрядов
отосортировать каждый из них привычным способом
собрать по порядку отдельные файлы в один большой
Ну или можно попробовать через Powershell Core 7, очень эффективная и быстрая штука. »
и что за средства есть в седьмом PoSh'е для сортировки файлов без загрузки в память?
DJ Mogarych
07-02-2020, 21:58
Busla, не знаю, в соседней ветке был случай с group, так PS 5.1 у меня пыхтел больше суток и так и не сделал, а PS 7 работал минут 15-20. Допускаю, что и с sort могло произойти нечто подобное.
r-studio
08-02-2020, 11:25
Ребят, спасибо за подсказки, по крайней мере понял на что смотреть.
Никакие PowerShell'ы, хоть обычные, хоть Core'ы, сюда не годятся по определению. Чистый (без .Net) C/C++, а лучше ассемблер.
Но начинать надо с:
что за файл, »
r-studio
09-02-2020, 10:52
Iska, txt файл
Iska, и как ассемблер может тут помочь?
txt файл »
Вы можете упаковать его некоторую часть (пару-тройку мегабайт) в архив, каковой выложить на облако/вменяемый обменник?
и как ассемблер может тут помочь? »
Скоростью обработки. Фактически, что напишете — то и будет в машинных кодах, без включения лишнего.
Iska, вы чушь пиш и eте.
Языки высокого уровня потому и существуют, что это по сути набор ассемблерных функций надёжность и эффективность которых за вас вылизывала толпа умнейших людей.
Самостоятельно на ассемблере имеет смысл реализовывать новый алгоритм.
Скоростью обработки. Фактически, что напишете — то и будет в машинных кодах, без включения лишнего. »
Не факт, что малоопытный в вопросах оптимизации человек напишет на асме код более оптимальным образом, чем это сделает высокоуровневый компилятор, написанный профессионалами. А если учитывать совокупное время на написание кода + выполнение задачи.....
r-studio
09-02-2020, 13:06
Iska,
https://dropmefiles.com/5j6Y5
r-studio, сортировка должна быть текстовая или числовая?
какая максимальная разрядность чисел?
распределение примерно равномерное?
r-studio
09-02-2020, 13:55
Busla,числовое, нет распределение не равномерное, это точно.
Jula0071
09-02-2020, 13:58
сортировка должна быть текстовая или числовая? »
И что делать с дублями?
На unix-like такое делается как два пальца, например вот в убунте WSL на винде 10 сортируем как числа с убиранием дублей, второй вариант - распараллеливаем на два потока для ускорения:
time $(sort -u -n 445.txt -o 445_sorted.txt)
real 0m0.799s
user 0m2.844s
sys 0m0.453s
time $(sort --parallel=2 -u -n 445.txt -o 445_sorted.txt)
real 0m1.071s
user 0m1.609s
sys 0m0.203s
Для очень больших файлов (гигабайты, десятки гигабайт и больше) имеет смысл применять сжатие временных файлов, напр. --compress-program=lzop и указывать специальную временную директорию --temporary-directory=/mnt/1TB_partition/
UPD нагуглил скрипт (http://sgolconda.blogspot.com/2015/11/sort-very-large-dataset.html), использующий всё тот же sort, но c разбитием исходного файла на куски (split,sort,merge). Автор говорит, что так быстрее. Но проверить это можно только на реально большом файле, который не помещается в память.
Iska, вы чушь пишите. »
Спасибо за пожелание, но — нет :lol:. Я не планирую писать чушь.
Языки высокого уровня потому и существуют, что это по сути набор ассемблерных функций надёжность и эффективность которых за вас вылизывала толпа умнейших людей. »
ЯВУ существуют исключительно для того, чтобы сократить временные затраты на написание приложений, а вовсе не потому, что озвучили Вы, коллега.
Самостоятельно на ассемблере имеет смысл реализовывать новый алгоритм. »
Разумеется.
Не факт, что малоопытный в вопросах оптимизации человек напишет на асме код более оптимальным образом, чем это сделает высокоуровневый компилятор, написанный профессионалами. »
Отчасти соглашусь. В старые-то времена оптимизация компиляторов ЯВУ была, гм, такое себе, а уж для нынешних-то…
А если учитывать совокупное время на написание кода + выполнение задачи..... »
Вот здесь — в точку. Но смотреть именно на время выполнения задачи — надо. Потому как может оказаться, что «Лучше день потерять, потом за час долететь» отработает быстрее, нежели «Что тут думать — трусить надо» ;). Выбор того или иного подхода будет напрямую зависеть от конкретики задачи.
r-studio, спасибо, ясно. Какова конечная цель? Для чего делается сортировка? Что будет происходить с этим отсортированным файлом дальше, для чего он нужен в отсортированном виде?
r-studio
09-02-2020, 14:55
Iska, а далее для чего продакт манагер решит , мы не знаем что у Богов на уме)) Возможно будет джойн какой-то или назначение категорий к числам.
Ух… Это печально. Можете выяснить?
r-studio
09-02-2020, 16:31
Iska, ну сегодня вряд ли, Боги отдыхают скорее всего, но главное вряд ли скажут, но у думаю моя версия будет джойн какой-то или назначение категорий к числам.
в итоге будет файл
число и его тестовая расшифровка
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.