从HDFS读回文件时,我发现了很多错误:
{"id":"646626691524096003","user_friends_count":{"int":83},"user_location":{"string":"他の星から副都心線経由"},"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
当我们尝试用各种工具阅读它们时,例如:
$ java -jar ~/avro-tools-1.7.7.jar tojson FlumeData.1443002797525
将它们写入HDFS的机器是一台脆弱连接的笔记本电脑,因此它很可能会定期断开连接,但是实际上没有预期损坏的文件 - 在这种情况下,文件似乎遇到无效块通过文件的大小约为11%(vim估计)。
FWIW我认为它即将宣读的特定用户描述是针对Twitter用户@ MyTime0627。
答案 0 :(得分:0)
你可以查看这篇文章。我也遇到了这个问题。 JSON SerDe和Avro SerDe无法同时处理事件。
Cloudera 5.4.2: Avro block size is invalid or too large when using Flume and Twitter streaming