Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оброботка огормного файла 
:(
    Опции темы
Dmi
Дата 13.5.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Вообщем такая вот задача: 
Есть текстовый файл. В нем в столбик находятся слова или словосочетания.
Слова повторяются.
Задача:  Нужно найти все словосочетания которые повторяются больше 100 раз и вывести в порядке возврастания.
word1 : 2342 раз
...
word 2 : 1014 раз
Есть готовый скрипт на перле, который быстро обрабатывает файлы по 100- 200 метров
Проблема, в том что файл размером ~ 3gb. Перл естественно не справляется
Так как вот, можно как то это средствами оси сделать?
Разбивать файл нельзя, требуется статистика по всему файлу.
Конфиг сервака: P4 2.4|512 ram|Fedora
В какую сторону капать ?  smile 


Это сообщение отредактировал(а) Dmi - 13.5.2007, 14:59
PM MAIL   Вверх
ZeeLax
Дата 13.5.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 7
Всего: 88



Цитата(Dmi @  13.5.2007,  17:58 Найти цитируемый пост)
Так как вот, можно как то это средствами оси сделать?

Что значит средствами оси? ;)

Цитата(Dmi @  13.5.2007,  17:58 Найти цитируемый пост)
В какую сторону капать ?

А копать надо в сторону алгоритмов и не в этом разделе.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
bilbobagginz
Дата 13.5.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 34
Всего: 317



можно даже сказать, что копать нужно в сторону параллельных и распределенных алгоритмов.
есссно при ограниченной скорости доступа к памяти/диску 
Цитата

Перл естественно не справляется

вполне возможно, что писан этот перл ногами...

если задача заставляет обрабатывать весь файл в памяти, вам нужно добавить памяти и свопу. 0.5ГБ - очень мало.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
ToshaCh
Дата 14.5.2007, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 2
Всего: 26



Вообще интерестная задача - (меня зацепило smile), но не для этого раздела: двинуть её в алгоритмы надо.


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
Dmi
Дата 14.5.2007, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Да вы правы, Перл скрипт может не очень грамотный (много памяти ест).
Тут конечно нужен алгоритм хороший.
А пока, так как мне было нужно срочно, решил с помощью sort, uniq (вот почему в этот раздел запостил)
Код

sort f > f.s
uniq -d -c f.s > f.u
sort -nr f.u > f.us

Не быстро конечно, но дело свое скрипт сделал, может кому пригодится.
PM MAIL   Вверх
Ch0bits
Дата 14.5.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: нет
Всего: 62



Надо загонять все слова из файла в B-tree со счётчиком наложений, если комбинаций не очень много и памяти хватает, то можно в обычное AVL-tree. Счётчик тоже индексировать деревом, а потом использовать как очередь с приоритетами. Из этой очереди вытаскиваем слова в порядке возрастания количества наложений. (я не спец в алгоритмах, но поступил бы так)
Только как это написать на perl'е?   smile

Добавлено через 3 минуты и 26 секунд
Dmi, гы-гы, а про сортировку то я не подумал!  smile 

Ещё есть один извращенский способ! Загнать все слова в БД и вытаскивать через SQL.  smile 
PM WWW   Вверх
MAKCim
Дата 14.5.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Dmi
а что, каналы запрещено использовать?  smile 
Код

sort f | uniq -d | sort -nr > f.us

это уж точно быстрее записи на диск, даже если 50% кэшируется

Это сообщение отредактировал(а) MAKCim - 14.5.2007, 09:35


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Администрирование"
ZeeLax
Imple
nerezus
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.

  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование *NIX систем | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.