2016-05-19 12 views
2

Ich versuche, Daten von twitter mit runet und speichern zu hdfs in JSON FORMAT.And die Daten werden auf HDFS.BUT NICHT IN JSON FORMAT geladen.Abrufen von Daten von Twitter mit rume und Speichern in hdfs in JSON FORMAT

Ich füge einige Zeilen aus der HDFS-Datei, die von twitter gespeichert ist:

Objavro.schema\E4 
{"type":"record","name":"Doc","doc":"adoc","fields":[{"name":"id","type":"string"},{"name":"user_friends_count","type":["int","null"]},{"name":"user_location","type":["string","null"]},{"name":"user_description","type":["string","null"]},{"name":"user_statuses_count","type":["int","null"]},{"name":"user_followers_count","type":["int","null"]},{"name":"user_name","type":["string","null"]},{"name":"user_screen_name","type":["string","null"]},{"name":"created_at","type":["string","null"]},{"name":"text","type":["string","null"]},{"name":"retweet_count","type":["long","null"]},{"name":"retweeted","type":["boolean","null"]},{"name":"in_reply_to_user_id","type":["long","null"]},{"name":"source","type":["string","null"]},{"name":"in_reply_to_status_id","type":["long","null"]},{"name":"media_url_https","type":["string","null"]},{"name":"expanded_url","type":["string","null"]}]}\00\E0D\C9H\B8$\DCb,C\8A5y\D1n\CE$733267766577356800\00\96\00Zumaran \00\C6C.A.B//C.A.H 
Wsp:351 220-1251 
Fb:Ramiro Pedernera✌ 
Insta:Ramiropedernera 
Snapp:ramipedernera12\00\B2\9E\00\B2(\00(DIVI^Lista RAMIRO P.\00RamiPedernera12\00(2016-05-19T17:37:13Z\00tGaray culiadaso me metió una patada en la frente \00\00\00\00\00\00\A8<a href="http://twitter.com/download/android" rel="nofollow">Twitter for Android</a>\00\E0D\C9H\B8$\DCb,C\8A5y\D1n 
Objavro.schema\E4 

Da dies nicht im JSON-Format ist es nicht möglich, sie zu verarbeiten, indem diese Datentabelle in HIVE und Laden. So Bitte helfen Sie mir die Twitter-Daten im JSON-Format zu Hadoop HDFS zu laden

Dies ist der Befehl, den ich verwenden:

bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent 

Und die twitter.conf angebracht ist:

TwitterAgent.sources = Twitter 
TwitterAgent.channels = MemChannel 
TwitterAgent.sinks = HDFS 
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource 
TwitterAgent.sources.Twitter.channels = MemChannel 
TwitterAgent.sources.Twitter.consumerKey =******** 
TwitterAgent.sources.Twitter.consumerSecret =************* 
TwitterAgent.sources.Twitter.accessToken =**************** 
TwitterAgent.sources.Twitter.accessTokenSecret =***************** 
TwitterAgent.sources.Twitter.keywords = hadoop, big data, analytics, bigdata, cloudera, data science, data scientiest, business intelligence, mapreduce, data warehouse, data warehousing, mahout, hbase, nosql, newsql, businessintelligence, cloudcomputing 
TwitterAgent.sinks.HDFS.channel = MemChannel 
TwitterAgent.sinks.HDFS.type = hdfs 
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:54310/user/hduser_/twitter-cool 
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream 
TwitterAgent.sinks.HDFS.hdfs.writeFormat = json 
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000 
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000 
TwitterAgent.channels.MemChannel.type = memory 
TwitterAgent.channels.MemChannel.capacity = 10000 
TwitterAgent.channels.MemChannel.transactionCapacity = 100 
TwitterAgent.sources.Twitter.handler = org.apache.flume.source.http.JSONHandler 
+0

BTW, https://gwu-libraries.github.io/sfm-ui/posts/2017-09-14-twitter-data – Nemo

Antwort

0

Die Ereignisse von TwitterSource aus Flume sind standardmäßig im Avro-Format. Um das zu ändern, müssten Sie die Quelldateien der TwitterSource ändern, um die Tweets im Raw-Format (JSON) zu erhalten. Glücklicherweise tat Cloudera schon, dass hier in https://github.com/cloudera/cdh-twitter-example

Alles, was Sie tun müssen, ist die Bibliotheken für eine neue TwitterSource installieren Sie die TwitterAgent.sources.Twitter.type in der Datei Flume config com.cloudera.flume.source.TwitterSource Sie die Schritte in der Readme und ändern. Es gibt ein Beispiel für die Konfigurationsdatei im selben Projekt.

Hoffe, dass es

2

hilft von Avro zu JSON-Format Sie wenige Schritte folgen müssen, um zu ändern:

In Ihrer Konfigurationsdatei

zu

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource 
die Eigenschaft ändern

com.cloudera.flume.source.TwitterSource ist eine benutzerdefinierte Klasse, die den Datensatz im JSON-Format in schreibt HDFS.

Um diese Klasse zu erhalten, gehen Sie zu https://github.com/cloudera/cdh-twitter-example und laden Sie den rune-sources-Ordner in Ihren lokalen Ordner herunter und erstellen Sie die JAR-Datei daraus.

  1. Um die Gerinne-Quellen JAR zu bauen:

    cd hive-serdes
    mvn package
    cd ..

Diese eine Datei Gerinne-sources-1.0-SNAPSHOT genannt wird erzeugen $ $ $. jar im Zielverzeichnis.

  1. die JAR-Classpath Flume hinzufügen

Kopieren flume-sources-1.0-SNAPSHOT.jar-/usr/lib/flume-ng/plugins.d/twitter-streaming/lib/flume-sources-1.0-SNAPSHOT.jar und auch /var/lib/flume-ng/plugins.d/twitter-streaming/lib/flume-sources-1.0-SNAPSHOT.jar

wenn diese Verzeichnisse nicht existieren, dann erstellen, wie

sudo mkdir -p /usr/lib/flume-ng/plugins.d/twitter-streaming/lib/ 

sudo mkdir -p /var/lib/flume-ng/plugins.d/twitter-streaming/lib/ 

weitere finden Sie in Analyzing Twitter Data Using CDH

Hoffe das hilft dir !!!