file - Hadoop 作业从多个目录获取输入文件并在映射阶段检测每个文件

标签 file hadoop input mapreduce

在一个作业中有两个输入文件,它们位于两个不同的目录中,在 Hadoop job taking input files from multiple directories 中,我们可以从多个目录读取文件。这些文件具有相同的名称,但它们位于不同名称的文件夹中。 C1/part-0000 C2/part-0000 有没有可能在map阶段检测文件?
就像是: public void map(LongWritable key, Text value, Context 上下文) 抛出 IOException,InterruptedException { 如果(第一个文件){ ... context.write(outputKey, outputValue); } } 别的 { //第二个文件 ... context.write(outputKey, outputValue); } }

最佳答案

在设置阶段检查

@Override
protected void setup(Context context) throws IOException, InterruptedException {
    FileSplit split = (FileSplit) context.getInputSplit();
    Path path = split.getPath();
    String name = path.getName();
    ...

不要在每一行的 map 方法中检查它,因为每个映射器都是为 1 个输入拆分创建的。

关于file - Hadoop 作业从多个目录获取输入文件并在映射阶段检测每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003026/

相关文章:

javascript - Google Drive API - 上传音频 blob 以 base64 字符串进行转换 -drive.files.create 方法 - 找不到文件 ID

java - 在本地文件系统中创建文件夹

apache-spark - 如何在使用 Spark 数据帧写入时自动计算 numRepartition

html - 输入焦点时给 <i> 标签背景

objective-c - 通过蓝牙发送文件

java - 无法访问原始文件夹中的文件

C++在循环中写入文件

hadoop - yarn : yarn-site. xml 更改未生效

input - Prolog-文件意外结束

jsf - 在 primefaces 中通过文件上传传递输入文本值