小编Pse*_*udo的帖子

Hadoop 1输入文件= 1个输出文件,仅限映射

我是Hadoop的新手,但这是我上个月的一个学习项目.

为了保持这种含糊不清以便对他人有用,让我先抛弃基本目标......假设:

  1. 你有一个庞大的数据集(很明显),有数百万个基本的ASCII文本文件.
    • 每个文件都是"记录".
  2. 记录存储在目录结构中以标识客户和日期
    • 例如/ user/hduser/data/customer1/YYYY-MM-DD,/ user/hduser/data/customer2/YYYY-MM-DD
  3. 您想模仿输出结构的输入结构
    • 例如/ user/hduser/out/customer1/YYYY-MM-DD,/ user/hduser/out/customer2/YYYY-MM-DD

我看过多个线程:

还有更多..我也一直在阅读Tom White的Hadoop书.我一直在急切地想要学习这一点.我经常在新API和旧API之间进行交换,这增加了尝试学习这一点的困惑.

许多人指向MultipleOutputs(或旧的api版本),但我似乎无法生成我想要的输出 - 例如,MultipleOutputs似乎不接受"/"来在write()中创建目录结构

创建具有所需输出结构的文件需要采取哪些步骤?目前我有一个WholeFileInputFormat类,以及具有(NullWritable K,ByteWritable V)对的相关RecordReader(如果需要可以更改)

我的地图设置:

public class MapClass extends Mapper<NullWritable, BytesWritable, Text, BytesWritable> {
    private Text filenameKey;
    private MultipleOutputs<NullWritable, Text> mos;

    @Override
    protected void setup(Context context) throws IOException, InterruptedException {
        InputSplit split = context.getInputSplit();
        Path path = ((FileSplit) split).getPath();
        filenameKey = new Text(path.toString().substring(38)); // bad hackjob, until i figure …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce output

3
推荐指数
1
解决办法
4562
查看次数

标签 统计

hadoop ×1

mapreduce ×1

output ×1