Hadoop

Java读取HDFS文件

2019-06-27  本文已影响0人  王勇1024

最近在实现一个功能:用户在前端页面触发Docker镜像构建,后端监听Docker镜像的构建状态,并将Docker镜像的构建日志保存到HDFS,之后用户可以随时在前端看到本次构建的日志。
从HDFS读取日志是用下面的方式实现的:

try(final FSDataInputStream inputStream = this.open(hdfsPath)){
      return inputStream.readUTF();
}catch (Exception e){
   log.error(e.getMessage() ,e);
   throw new AlphaException(READ_COMPILE_LOG_ERROR);
}

但通过这种方式读取时最多只能读取1K数据,导致日志不完整。
通过下面的方式可以实现日志的完整读取:

try(final FSDataInputStream inputStream = this.open(hdfsPath)){
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    IOUtils.copyBytes(inputStream,baos, 1024);
    return new String(baos.toByteArray());
}catch (Exception e){
    log.error(e.getMessage() ,e);
    throw new AlphaException(READ_COMPILE_LOG_ERROR);
}
上一篇下一篇

猜你喜欢

热点阅读