Cloudera 5.4.2: Avro-Blockgröße ist ungültig oder zu groß, wenn Flume- und Twitter-Streaming verwendet wird

Es gibt ein winziges Problem, wenn ich Cloudera 5.4.2 versuche. Basis auf diesem Artikel

Apache Flume - Abrufen von Twitter-Datenhttp: //www.tutorialspoint.com/apache_flume/fetching_twitter_data.ht

Es wird versucht, Tweets mit Flume- und Twitter-Streaming für die Datenanalyse abzurufen. Alles ist gut, erstelle eine Twitter-App, erstelle ein Verzeichnis in HDFS, konfiguriere Flume und beginne dann, Daten abzurufen, erstelle ein Schema über Tweets.

Dann ist hier das Problem. Beim Twitter-Streaming werden Tweets in das Avro-Format konvertiert und Avro-Ereignisse an Downstream-HDFS-Senken gesendet. Wenn die von Avro unterstützte Hive-Tabelle die Daten lädt, wird die Fehlermeldung "Avro-Blockgröße ist ungültig oder zu groß" angezeigt.

Oh, was ist Avro Block und die Begrenzung der Blockgröße? Kann ich das ändern? Was bedeutet es laut dieser Nachricht? Ist es die Schuld der Datei? Ist es ein Rekordfehler? Wenn das Streaming von Twitter auf Fehlerdaten stößt, sollte es ausfallen. Wenn es gut ist, die Tweets in das Avro-Format umzuwandeln, sollten die Avro-Daten umgekehrt richtig gelesen werden, oder?

Und ich probiere auch die avro-tools-1.7.7.jar

java -jar avro-tools-1.7.7.jar tojson FlumeData.1458090051232

{"id":"710300089206611968","user_friends_count":{"int":1527},"user_location":{"string":"1633"},"user_description":{"string":"Steady Building an Empire..... #UGA"},"user_statuses_count":{"int":44471},"user_followers_count":{"int":2170},"user_name":{"string":"Esquire Shakur"},"user_screen_name":{"string":"Esquire_Bowtie"},"created_at":{"string":"2016-03-16T23:01:52Z"},"text":{"string":"RT @ugaunion: .@ugasga is hosting a debate between the three SGA executive tickets. Learn more about their plans to serve you https://t.co/…"},"retweet_count":{"long":0},"retweeted":{"boolean":true},"in_reply_to_user_id":{"long":-1},"source":{"string":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>"},"in_reply_to_status_id":{"long":-1},"media_url_https":null,"expanded_url":null}

{"id":"710300089198088196","user_friends_count":{"int":100},"user_location":{"string":"DM開放してます(`・ω・´)"},"user_description":{"string":"Exception in thread "main" org.apache.avro.AvroRuntimeException: java.io.IOException: Block size invalid or too large for this implementation: -40

at org.apache.avro.file.DataFileStream.hasNextBlock(DataFileStream.java:275)

at org.apache.avro.file.DataFileStream.hasNext(DataFileStream.java:197)
at org.apache.avro.tool.DataFileReadTool.run(DataFileReadTool.java:77)
at org.apache.avro.tool.Main.run(Main.java:84)
at org.apache.avro.tool.Main.main(Main.java:73)
Caused by: java.io.IOException: Block size invalid or too large for this implementation: -40
at org.apache.avro.file.DataFileStream.hasNextBlock(DataFileStream.java:266)
... 4 more

Dasselbe Problem. Ich google viel und habe überhaupt keine Antworten.

Kann mir jemand eine Lösung geben, wenn Sie dieses Problem auch getroffen haben? Oder jemand hilft, einen Hinweis zu geben, wenn Sie Avro-Inhalte oder Twitter-Streaming vollständig verstehen.

It ist wirklich intereting Problem. Denk darüber nach

Antworten auf die Frage(2)

Ihre Antwort auf die Frage