2013-05-05 9 views
13

Chcę utworzyć korpus tekstowy zawierający 100 milionów tweetów za pomocą pakietu rozproszonego T dla komputerów PC (zwanego tm.plugin.dc). Tweety są przechowywane w dużej tabeli MySQL na moim laptopie. Mój laptop jest stary, więc używam klastra Hadoop, który ustawiłem na Amazon EC2.Jak utworzyć korpus z 100 milionami tweetów?

Urządzenie tm.plugin.dc documentation from CRAN mówi, że tylko DirSource jest obecnie obsługiwane. Dokumentacja wydaje się sugerować, że DirSource zezwala tylko na jeden dokument na plik. Potrzebuję korpusu, aby traktować każdy tweet jako dokument. Mam 100 milionów tweetów - czy to oznacza, że ​​muszę zrobić 100 milionów plików na moim starym laptopie? Wydaje się to przesadne. Czy istnieje lepszy sposób?

Co próbowałem dotąd:

  1. Zrób zrzut pliku z tabeli MySQL jako pojedynczy (masywny) .sql pliku. Prześlij plik do S3. Przenieś plik z S3 do klastra. Zaimportuj plik do Hive za pomocą narzędzia Sqoop firmy Cloudera. Co teraz? Nie mogę wymyślić, jak sprawić, by DirSource działało z Hive.

  2. Wprowadź każdy tweet w plik XML na moim laptopie. Ale jak? Mój komputer jest stary i nie radzi sobie tak dobrze. ... Gdybym mógł przejść obok tego, wtedy: Przesłałbym wszystkie 100 milionów plików XML do folderu w S3 Amazon. Skopiuj folder S3 do klastra Hadoop. Wskaż DirSource do folderu.

+0

W jaki sposób są przechowywane tweety w bazie danych? Jako XML? i jak duży jest plik? Zakładam, że jesteś zainteresowany zawartością każdego tweeta i budujesz z niego korpus. Możesz przeczytać korpus z jednego pliku, nie musisz tworzyć milionów plików. –

+0

@Dr VComas: Nie jestem pewien, co masz na myśli przez "jak przechowywane są tweety" - Mam różne kolumny varchar w moim stole, jeśli o to ci chodzi.Na przykład jedna kolumna nazywa się textOfTweet, a druga nazywa się statusID. MySQL pozwala mi eksportować zawartość jako plik XML, ale tweety nie są przechowywane jako pliki XML. Mogę eksportować w różnych formatach: csv, tab, sql, XML. Tak, interesuje mnie treść każdego tweeta. Każdy tweet ma również unikalne metadane, które chcę zachować. – user554481

+0

@Dr VComas: Czy istnieje sposób na tworzenie wielu dokumentów z jednego pliku w sposób rozproszony? Na przykład na Amazon EC2? Mój stół ma nieco ponad 10 GB (rośnie każdego dnia). – user554481

Odpowiedz

4

nie byłoby łatwiejsze i bardziej rozsądne zrobić ogromny plik HDFS z 100 milionami tweetów, a następnie przetworzyć je za pomocą standardowego pakietu R 'tm?

Takie podejście wydaje mi się bardziej naturalne, ponieważ HDFS został opracowany dla dużych plików i rozproszonego środowiska, podczas gdy R jest doskonałym narzędziem analitycznym, ale bez równoległości (lub ograniczonej). Twoje podejście wygląda tak, jak przy użyciu narzędzi do czegoś, czego nie opracowano dla ...

2

Pakiet TM zasadniczo działa na modelu terminowym i dokumencie. Tworzy terminową macierz dokumentów lub macierz definicji dokumentu. Ta macierz zawiera funkcje takie jak term (słowo) i jego częstotliwość w dokumencie. Ponieważ chcesz przeprowadzić analizę danych na twitterze, każdy tweet powinien być dokumentem, a następnie możesz utworzyć TDM lub DTM. I może wykonywać różne analizy, takie jak znajdowanie asocjacji, wyszukiwanie częstotliwości lub grupowanie lub obliczanie miary TDF-IDF, itp.

Musisz zbudować korpus źródła katalogu. Musisz więc mieć katalog podstawowy zawierający pojedyncze dokumenty, które są twoimi tweetami.

Zależnie od używanego systemu operacyjnego, co bym zrobił, gdyby system Windows utworzył plik .bat lub prosty kod javascript lub Java, aby odczytać wiersze MySQL dla pliku tweeta, a FTP to katalog obecny w lokalnym pliku system Hadoop Box.

Gdy pliki były FTP, możemy skopiować katalog do HDFS przy użyciu Hadoop Copy From Local Command.