Java 如何从映射作业输出整个文件?

Java 如何从映射作业输出整个文件?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,这是关于mapreduce输出的一个基本问题 我正在尝试创建一个map函数,该函数接收xml文件并使用ApacheFop生成pdf。然而,我对如何输出它有点困惑,因为我知道它是作为(键,值)对输出的 我也没有使用流媒体来实现这一点。map reduce的重点是处理通常不适合内存的大量数据,因此输入和输出通常会以某种方式存储在磁盘上(也称为文件)。 必须在中指定输入输出 使用“破坏”应用程序会导致输出PDF文件损坏。自己试试看 你有很多输入文件…这就是hadoop最糟糕的地方。我仍然觉得,您可以使

这是关于mapreduce输出的一个基本问题

我正在尝试创建一个map函数,该函数接收xml文件并使用ApacheFop生成pdf。然而,我对如何输出它有点困惑,因为我知道它是作为(键,值)对输出的


我也没有使用流媒体来实现这一点。

map reduce的重点是处理通常不适合内存的大量数据,因此输入和输出通常会以某种方式存储在磁盘上(也称为文件)。 必须在中指定输入输出

使用“破坏”应用程序会导致输出PDF文件损坏。自己试试看


你有很多输入文件…这就是hadoop最糟糕的地方。我仍然觉得,您可以使用脚本逐个调用每个文档来执行所需的操作。如果有多个节点,请在不同的输入文档子集上运行相同的脚本。相信我,考虑到创建映射和reduces所涉及的开销,这将比hadoop运行得更快(我知道,您不需要reduces)。

您尝试过什么?我们尝试使用hadoop的原因是因为我们需要一次频繁生成大约1000000个PDF。现在我确实看了一个我在那里找到的教程,它解释了更多关于输入和输出的内容。所以对于输出,我想也许我可以使用SequenceFileOutputFormat,但是我真的不确定它到底是如何输出的,因为没有减速器。我还遇到了另一个示例,其中他们为返回值设置了一个空值,然后只返回了键,但我不记得它在哪里was@user1325360见我的编辑上面
(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output) 
SequenceFile Common Header

    version - A byte array: 3 bytes of magic header 'SEQ', followed by 1 byte of actual version no. (e.g. SEQ4 or SEQ6)
    keyClassName - String
    valueClassName - String
    compression - A boolean which specifies if compression is turned on for keys/values in this file.
    blockCompression - A boolean which specifies if block compression is turned on for keys/values in this file.    
    compressor class - The classname of the CompressionCodec which is used to compress/decompress keys and/or values in this SequenceFile (if compression is enabled).    
    metadata - SequenceFile.Metadata for this file (key/value pairs)
    sync - A sync marker to denote end of the header.