Ich versuche, Twitter-Feeds zu hdfs zu streamen und dann Stock verwenden. Aber der erste Teil, Daten zu streamen und auf hdfs zu laden, funktioniert nicht und gibt Null Pointer Exception.Apache Flume Twitter Agent nicht Streaming-Daten
Das habe ich ausprobiert.
1. heruntergeladen Apache-Gerinne-1.4.0-bin.tar. Extrahiert es. Kopieren Sie den gesamten Inhalt zu /usr/lib/rume/. in/usr/lib/Ich wechselte den Besitzer zum Benutzer für den Kanalverzeichnis. Als ich in /usr/lib/Gerinne ls Befehl tun/, zeigt es
bin CHANGELOG conf DEVNOTES docs lib LICENSE logs NOTICE README RELEASE-NOTES tools
2. Umzug nach conf/ Verzeichnis. Ich kopierte die Datei flume-env.sh.template
als ru-me-env.sh Und ich bearbeitet die JAVA_HOME zu meinem Java-Pfad /usr/lib/jvm/java-7-oracle
.
3. Als nächstes habe ich eine Datei flume.conf in demselben conf
Verzeichnis genannt und hinzugefügt folgende Inhalte
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = <Twitter Application API key>
TwitterAgent.sources.Twitter.consumerSecret = <Twitter Application API secret>
TwitterAgent.sources.Twitter.accessToken = <Twitter Application Access token>
TwitterAgent.sources.Twitter.accessTokenSecret = <Twitter Application Access token secret>
TwitterAgent.sources.Twitter.keywords = hadoop, big data, analytics, bigdata, couldera, data science, data scientist, business intelligence, mapreduce, datawarehouse, data ware housing, mahout, hbase, nosql, newsql, businessintelligence, cloudcomputing
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:8020/user/flume/tweets/%Y/%m/%d/%H/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 600
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100
Ich habe eine App auf Twitter. Generierte Token und fügte alle Schlüssel zur obigen Datei hinzu. API Key Ich habe als Consumer Key hinzugefügt.
Ich habe das Glas von rume-sources von cloudera -files heruntergeladen, wie sie in here erwähnten.
4. I hinzugefügt, um die Gerinne-Quellen-1,0-SNAPSHOT.jar zu /user/lib/Gerinne/lib.
5. Gestartet Hadoop und getan das folgende
hadoop fs -mkdir /user/flume/tweets
hadoop fs -chown -R flume:flume /user/flume
hadoop fs -chmod -R 770 /user/flume
6. ich folgendes laufen in /user/lib/Gerinne
/usr/lib/flume/conf$ bin/flume-ng agent -n TwitterAgent -c conf -f conf/flume-conf
Es ist JARs es zeigt zeigt und dann geht es.
Wenn ich die hdfs überprüft habe, gibt es keine Dateien darin. hadoop fs -ls /user/flume/tweets
und es zeigt nichts.
In hadoop, die Kern-Site.xml Datei hat folgende Konfiguration
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
<fina1>true</fina1>
</property>
</configuration>
Dank
Sie sind den Fehler java.lang.NoSuchMethodError nicht geteeting: twitter4j.conf.Configuration.getRequestHeaders() Ljava/util/Karte; während des Betriebs? Weil diese Methode nicht im API-Jar existiert. – Amnesiac
Ich bekomme keinen Fehler. Es läuft perfekt. Ich benutze Apache Flume 1.4.0 – iUser