开发者社区> 问答> 正文

Hadoop中map()方法的接口和源代码以及操作示例是什么?

Hadoop中map()方法的接口和源代码以及操作示例是什么?

展开
收起
游客yzrzs5mf6j7yy 2021-12-06 06:33:47 281 0
1 条回答
写回答
取消 提交回答
  • ●   public void map(Text relPath,CopyListingFileStatus sourceFileStatus,           Context context) throws IOException,InterruptedException
    
    
    从输入参数可以看出来,这其实就是对上面分析过的UniformSizeInputFormat类里分片后的数据里的每一行进行处理,每行里存放的就是“K-V”对,也就是fileList.seq文件每行的内容。Map方法体前半部分有一大堆代码内容,其实都是一些准备和判断工作,为后面的拷贝服务,最终的拷贝动作发生在copyFileWithRetry(description,sourceCurrStatus, target, context, action, fileAttributes)这个函数中,进入这个函数一直往里面读,就能看到数据最终通过常用的Java输入输出流的方式完成点对点拷贝,最后拷贝方法源码如下:
    
     
    
    
    
    
     
    long copyBytes(FileStatus sourceFileStatus, long    sourceOffset,
    
          OutputStream    outStream, int bufferSize, Mapper.Context    context)
    
          throws    IOException {
    
        Path    source = sourceFileStatus.getPath();
    
        byte    buf[] = new byte[bufferSize];
    
        ThrottledInputStream    inStream = null;
    
        long    totalBytesRead = 0;
    
     
    
        try    {
    
          inStream    = getInputStream(source, context.getConfiguration());
    
          int    bytesRead = readBytes(inStream, buf, sourceOffset);
    
          while    (bytesRead >= 0) {
    
               totalBytesRead += bytesRead;
    
            if    (action == FileAction.APPEND) {
    
                 sourceOffset += bytesRead;
    
            }
    
               outStream.write(buf, 0, bytesRead);
    
               updateContextStatus(totalBytesRead, context, sourceFileStatus);
    
               bytesRead = readBytes(inStream, buf, sourceOffset);
    
          }
    
             outStream.close();
    
             outStream = null;
    
        } finally    {
    
          IOUtils.cleanup(LOG,    outStream, inStream);
    
        }
    
        return    totalBytesRead;
    
    }
    
     
    
    2021-12-06 06:34:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载