从hdfs读取实木复合地板时遇到一些问题,这些地板是我的程序定期生成的。因此,如果程序由于某种原因而关闭,它可能会产生一些损坏的文件。
现在,我要告诉的是正常损坏的文件,然后转到备份目录。但是我找不到一种很好的方法。
我遇到过两种损坏的文件:
1.parquet is not a Parquet file (too small length: 4)
在这种情况下,由于其大小,很容易分辨
2.parquet is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [56, 52, 53, 51]
在这种情况下,我不知道要从普通的书中讲到读到它。
据此,“将比其他文件低。>,但我找不到它。
有什么好的解决方案吗?谢谢。
答案 0 :(得分:0)
我找到了一种检查损坏文件的方法。我将ParquetFileReader.java中的readFooter()函数复制到我的项目中,并使用迭代器获取所有镶木地板文件并将readFooter()应用到它们。最后将这些损坏的文件保存到一个数组中,然后将其移动到另一个目录中。
答案 1 :(得分:0)
两个错误均表明在写入过程中未正确关闭实木复合地板文件。我建议不要修改阅读时的损坏,而是修改如下的编写逻辑:
因此,阅读器将仅观察正确关闭的文件。损坏的文件将保留在临时目录中。