2013-05-05 10 views
13

Voglio creare un corpus di testo di 100 milioni di tweet usando il pacchetto di calcolo distribuito R di R (chiamato tm.plugin.dc). I tweet sono memorizzati in una grande tabella MySQL sul mio portatile. Il mio portatile è vecchio, quindi sto usando un cluster Hadoop che ho configurato su Amazon EC2.Come rendere R tm corpus di 100 milioni di tweet?

Il tm.plugin.dc documentation from CRAN afferma che solo DirSource è attualmente supportato. La documentazione sembra suggerire che DirSource consente solo un documento per file. Ho bisogno del corpus per trattare ogni tweet come un documento. Ho 100 milioni di tweet - questo significa che ho bisogno di creare 100 milioni di file sul mio vecchio portatile? Sembra eccessivo. C'è un modo migliore?

Quello che ho provato finora:

  1. Fai un dump del file della tabella di MySQL come un unico (enorme) file sql. Carica il file su S3. Trasferisci il file da S3 al cluster. Importa il file in Hive usando lo strumento Sqoop di Cloudera. Ora cosa? Non riesco a capire come far funzionare DirSource con Hive.

  2. Trasforma ciascun tweet in un file XML sul mio laptop. Ma come? Il mio computer è vecchio e non può farlo bene. ... Se potessi passare oltre, allora vorrei: Carica tutti i 100 milioni di file XML in una cartella in S3 di Amazon. Copia la cartella S3 nel cluster Hadoop. Puntare DirSource alla cartella.

+0

Come vengono memorizzati i tweet nel database? Come XML? e quanto è grande il file? Presumo che tu sia interessato al contenuto di ciascun tweet e ne costruisca il corpus. È possibile leggere il corpus da un singolo file, non è necessario creare milioni di file. –

+0

@Dr VComas: Non sono sicuro di cosa intendi per "come vengono memorizzati i tweet" - Ho diverse colonne varchar nella mia tabella, se è questo che intendi.Ad esempio, una colonna è chiamata textOfTweet e un'altra è denominata statusID. MySQL mi consente di esportare i contenuti come file XML, ma i tweet non vengono archiviati come file XML. Posso esportare in una varietà di formati: csv, tab, sql, XML. Sì, sono interessato al contenuto di ogni tweet. Ogni tweet ha anche dei metadati unici associati che voglio mantenere. – user554481

+0

@Dr VComas: esiste un modo per creare più documenti da un singolo file in modo distribuito? Ad esempio su Amazon EC2? Il mio tavolo è leggermente superiore ai 10 GB (cresce ogni giorno). – user554481

risposta

4

non sarebbe più semplice e ragionevole creare un file HDFS enorme con 100 milioni di tweet e quindi elaborarli con il pacchetto standard R 'tm?

Questo approccio mi sembra più naturale poiché HDFS è sviluppato per file di grandi dimensioni e ambiente distribuito mentre R è un grande strumento analitico ma senza parallelismo (o limitato). Il tuo approccio sembra utilizzare gli strumenti per qualcosa che non sono stati sviluppati per ...

2

Il pacchetto TM funziona fondamentalmente sul modello di termini e documenti. Crea una matrice di documento termine o matrice di termini di documento. Questa matrice contiene caratteristiche come termine (parola) e la sua frequenza nel documento. Dal momento che si desidera eseguire analisi su dati di Twitter, si dovrebbe avere ogni tweet come documento e quindi è possibile creare TDM o DTM. E può eseguire varie analisi come trovare associazioni, trovare frequenze o clustering o calcolare misure TDF-IDF ecc.

È necessario creare un corpus di sorgenti di directory. Quindi è necessario avere una directory di base che contiene singoli documenti che è il tuo tweet.

A seconda del sistema operativo in uso, cosa avrei fatto se Windows crea il file .bat o un semplice codice javascript o java per leggere le righe MySQL per il file tweet e FTP una directory presente sul file locale sistema di Hadoop Box.

Una volta che i file erano FTP, è possibile copiare la directory su HDFS utilizzando Hadoop Copy From Local Command.

Problemi correlati