Как сделать корпус RTM из 100 миллионов твитов?

Я хочу создать текстовую базу из 100 миллионов твитов, используя пакет R для распределенных вычислений tm (называемый tm.plugin.dc). Твиты хранятся в большой таблице MySQL на моем ноутбуке. Мой ноутбук старый, поэтому я использую кластер Hadoop, который я настроил на Amazon EC2.

В документации tm.plugin.dc от CRAN говорится, что только DirSource в настоящее время поддерживается. Документация, похоже, предполагает, что DirSource позволяет использовать только один документ в файле. Мне нужно, чтобы корпус рассматривал каждый твит как документ. У меня 100 миллионов твитов — значит ли это, что мне нужно сделать 100 миллионов файлов на моем старом ноутбуке? Это кажется чрезмерным. Есть ли способ лучше?

Что я уже пробовал:

  1. Сделайте дамп таблицы MySQL в виде одного (массивного) файла .sql. Загрузите файл на S3. Перенесите файл с S3 на кластер. Импортируйте файл в Hive с помощью инструмента Cloudera Sqoop. Что теперь? Я не могу понять, как заставить DirSource работать с Hive.

  2. Сделать каждый твит файлом XML на моем ноутбуке. Но как? Мой компьютер старый и не может сделать это хорошо. ... Если бы я мог обойти это, я бы: Загрузил все 100 миллионов XML-файлов в папку на Amazon S3. Скопируйте папку S3 в кластер Hadoop. Укажите DirSource на папку.


person user554481    schedule 05.05.2013    source источник
comment
Как твиты хранятся в вашей базе данных? Как XML? и какой размер файла? Я предполагаю, что вы заинтересованы в содержании каждого твита и строите из него корпус. Вы можете прочитать корпус из одного файла, вам не нужно создавать миллионы файлов.   -  person Dr VComas    schedule 16.05.2013
comment
@Dr VComas: я не уверен, что вы имеете в виду под «как хранятся твиты» - у меня есть разные столбцы varchar в моей таблице, если вы это имеете в виду. Например, один столбец называется textOfTweet, а другой — statusID. MySQL позволяет мне экспортировать содержимое в виде файла XML, но твиты не сохраняются в виде файлов XML. Я могу экспортировать в различные форматы: csv, tab, sql, XML. Да, меня интересует содержание каждого твита. С каждым твитом также связаны уникальные метаданные, которые я хочу сохранить.   -  person user554481    schedule 16.05.2013
comment
@Dr VComas: Есть ли способ создать несколько документов из одного файла распределенным способом? Например на Amazon EC2? Моя таблица чуть больше 10 ГБ (она растет каждый день).   -  person user554481    schedule 16.05.2013
comment
Вы можете создать свой корпус из CSV-файла, например, с текстом в одном из столбцов. Я сделал это для небольших файлов, в вашем случае проблема заключается в размере, не знаю, поможет ли это, но вы можете легко расширить свой корпус, если у вас есть несколько CSV-файлов с твитами. Это должен быть более простой способ наверняка.   -  person Dr VComas    schedule 16.05.2013
comment
@Dr VComas: Можно ли извлечь несколько «документов» из одного файла? Можно ли сделать извлечение параллельным или распределенным способом? Вам нужно написать пользовательскую функцию Reader?   -  person user554481    schedule 17.05.2013
comment
похоже, вам нужно написать собственную функцию чтения, но вы должны связаться с сопровождающим statmath.wu.ac .at/~theussl   -  person Patrick McCann    schedule 13.06.2013


Ответы (3)


не проще и разумнее было бы сделать огромный файл HDFS со 100 миллионами твитов и затем обработать их стандартным пакетом R' tm?

Этот подход кажется мне более естественным, поскольку HDFS разработана для больших файлов и распределенной среды, а R — отличный аналитический инструмент, но без параллелизма (или с ограничениями). Ваш подход выглядит как использование инструментов для чего-то, для чего они не были разработаны...

person xhudik    schedule 19.05.2014

Я настоятельно рекомендую проверить этот URL-адрес http://www.quora.com/How-can-R-and-Hadoop-be-used-together. Это даст вам необходимое понимание вашей проблемы.

person Siva Karthikeyan    schedule 25.06.2013

Пакет ТМ в основном работает по модели сроков и документов. Он создает матрицу документов терминов или матрицу терминов документов. Эта матрица содержит такие признаки, как термин (слово) и его частотность в документе. Поскольку вы хотите выполнить анализ данных твиттера, у вас должен быть каждый твит в виде документа, а затем вы можете создать TDM или DTM. И может выполнять различные анализы, такие как поиск ассоциаций, поиск частот или кластеризация или расчет показателя TDF-IDF и т. д.

Вам нужно создать корпус исходного каталога. Поэтому вам нужен базовый каталог, содержащий отдельные документы, которые являются вашим твитом.

В зависимости от используемой ОС, что бы я сделал, если Windows создаст файл .bat или простой код javascript или java для чтения строк MySQL для файла твита и FTP в каталоге, присутствующем в вашей локальной файловой системе Hadoop Box .

После того, как файлы были FTP, мы можем скопировать каталог в HDFS с помощью команды Hadoop Copy From Local.

person Tanveer    schedule 17.06.2014