Как лучше хранить данные для последующей обработки?

Начал играться с анализом языковых данных и такой вопрос возник - как обычно хранят данные перед обработкой? Есть, к примеру, сотня гигов текстовых файлов, данные в которых разделены табами. И я пока не знаю, что именно мне в них понадобится. Можно их распарсить и залить в постгрес или монгу, а в дальнейшем брать оттуда огромнейшие выборки (использовать курсор?) и что-то с ними делать. Или оставить как есть, а как что понадобится - парсить каким-нибудь хадупом или чем-то вроде того.

В общем - поделитесь кто знает, как рабочий процесс происходит в этой области. Может, есть статьи по теме хорошие?
  • Вопрос задан
  • 2928 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Gabriel_vs
I'm a Scientist in Data Analysis / programmar.
Хранение данных в BigData порой граничит с искусством. В целом, тут как и везде -- всё зависит от задачи, которая ставится. В любом случае, работа/анализ с текстовыми данными неминуемо приведет вас к Инвертируемому индексу (причем к нескольким).

Если пока вкратце, то вам надо проиндексировать содержимое "сырых данных" (файлы, веб, БД, etc). Пока проиндексировать как есть, без изменения самих данных. Если это реально BigData, то надо подумать о распределенном индексе, понимать стоит ли (а если да, то как) реплицировать индекс (но это уже вопрос производительности).

Так же, для работы и анализа вам обязательно понадобится такой же по структуре индекс, с той лишь разницей, что данные, которые в нем будут храниться, необходимо нормализовать. Как минимум к токенам (словам) применить алгоритм стемминга (или лемматизация, если хотите получить лучшее качество).

Опять же, в зависимости от задач (направления анализа) вам надо подумать о тезаурусах, для решения синонимии терминов в вашем индексе. Но, это я уже пошел в сторону более глубокого анализа данных. Там много что вам понадобится.

Если бы был пример конкретной задачи, то я бы по конкретнее написал о инструментах, подходах, методах.

Немого ссылок:
1. По информационному поиску / анализу данных читайте вот это:
Введение в информационный поиск, Маннинг
Обработка неструктурированных текстов. Поиск, орга...
2. Импорт / фреймворки / библиотеки индексирования и поиска:
Apach Solr
Apach Tika
3. Инвертированный индекс

PS: всё же хотелось бы узнать о конкретной задачи, тогда было бы больше конкретики.

UPD: в ряде случаев в BigData надо манипулировать графовой структурой данных. Соответственно, посмотрите в сторону соответствующих СУБД, например neo4j. Главное требования к СУБД в BigData -- минимализм функционала, иначе на больших данных работать будет всё крайне медленно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы