avro文件写入hdfs导致块大小无效

50few1ms  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(333)

在从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的。

mtb9vblg

mtb9vblg1#

你可以查这个帖子。我也遇到了这个问题。json-serde和avro-serde不能同时处理事件。
cloudera 5.4.2:使用flume和twitter流时,avro块大小无效或太大

相关问题