美文网首页
Filesystem close()的错误

Filesystem close()的错误

作者: 豪大大大 | 来源:发表于2018-07-25 16:57 被阅读0次

    问题:在读取多个文件的时候,发现有一些图片不能显示的,并且每次不能显示的图片都不一样,但是又没有报错,最后debug的时候发现,是Filesystem被关闭了。在多个线程获取文件的时候,有些线程获取完后就关闭了Filesystem,但是其他线程还没有获取完文件,所以就出现了有些图片不能显示的问题。

    解决:在网上查询到也有人遇到这个问题,虽然原因不大一样,但是解决方法是一样的,就是在获取Filesystem对象的时候加上下面的配置就可以了

    conf.setBoolean("fs.hdfs.impl.disable.cache", true)

    完整获取对象方法

    原理:FileSytem类内部有一个static CACHE,用来保存每种文件系统的实例集合,FileSystem类中可以通过”fs.%s.impl.disable.cache”来指定是否缓存FileSystem实例(其中%s替换为相应的scheme,比如hdfs、local、s3、s3n等),即一旦创建了相应的FileSystem实例,这个实例将会保存在缓存中,此后每次get都会获取同一个实例。所以设为true以后,就能解决上面的异常。

    参考连接:https://blog.csdn.net/bitcarmanlee/article/details/68488616

    相关文章

      网友评论

          本文标题:Filesystem close()的错误

          本文链接:https://www.haomeiwen.com/subject/sfxmmftx.html