gpt4 book ai didi

hadoop - 我们什么时候可以为 hadoop Mapper 初始化资源?

转载 作者:可可西里 更新时间:2023-11-01 15:10:19 24 4
gpt4 key购买 nike

我有一个小的 sqlite 数据库(邮政编码 -> 美国城市名称),我有一个很大的用户 S3 文件。我想将每个用户映射到与其邮政编码关联的城市名称。

我遵循著名的 WordCount.java 示例,但我不确定 mapReduce 的内部工作方式:

  • 我的映射器是否为每个 s3 输入文件创建一次?
  • 我应该在创建映射器时连接到 sqlite 数据库吗?我应该在映射器的构造函数中这样做吗?

最佳答案

MapReduce 是一个框架,用于编写应用程序以可靠和容错的方式在大型商用硬件集群上并行处理大数据。 MapReduce 在 HDFS(Hadoop 分布式文件系统)之上以两个不同的阶段执行,称为映射阶段和减少阶段。

回答您的问题我的映射器是否为每个 s3 输入文件创建一次?

创建的Mapper等于 split 的数量并且默认创建的分割等于 block 的数量。

高级概述类似于

input file->InputFormat->Splits->RecordReader->Mapper->Partitioner->Shuffle&Sort->Reducer->final output

例子,

  1. 您的输入文件 - server1.log、server2.log、server3.log
  2. InputFormat 将根据 block 大小创建 Split 的数量(默认情况下)
  3. 对应于每个 Split,将分配一个 Mapper 来处理每个 split。
  4. 要从 Split 中获取记录行,一个 RecordReader 将位于 Mapper 和 Split 之间。
  5. Partitioner 将启动。
  6. Partitioner Shuffle&Sort 阶段将开始。
  7. reducer
  8. 最终输出。

第二个问题的答案:以下是Mapper的三种标准生命周期方法。

@Override
protected void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {

// Filter your data
}

}
@Override
protected void setup(Mapper<Object, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
System.out.println("calls only once at startup");
}
@Override
protected void cleanup(Mapper<Object, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
System.out.println("calls only once at end");
}

关于hadoop - 我们什么时候可以为 hadoop Mapper 初始化资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com