Java 仅映射Mapreduce文本输出

Java 仅映射Mapreduce文本输出,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我正在写一份mapreduce工作。而且这是一项仅限于地图的工作。我的输出键包含两个元素,值包含一个元素。从表的角度来看,我希望输出是三列,每行是一条新记录。如果可能的话,应该用一些特殊字符来分隔 然而,我很难用Java实现它 我的映射器现在看起来如下所示: public class <classname> extends Mapper<AvroKey<<schema.class>>, NullWritable, Map<String, Strin

我正在写一份mapreduce工作。而且这是一项仅限于地图的工作。我的输出键包含两个元素,值包含一个元素。从表的角度来看,我希望输出是三列,每行是一条新记录。如果可能的话,应该用一些特殊字符来分隔

然而,我很难用Java实现它

我的映射器现在看起来如下所示:

public class <classname> extends Mapper<AvroKey<<schema.class>>, NullWritable, Map<String, String>, Text>{
    public void map(AvroKey<<schema.class>> key, NullWritable value, Context context) throws IOException, InterruptedException {
        CharSequence content = key.datum().getContent();
        Parser dp = new Parser(content);
        dp.parse();
        for (Part part : dp.getResults()) {
            try {
                Map<String, String> myKey = new HashMap<String, String>(); 
                Text myValue = new Text();
                myKey.put(part.getKey1(), part.getKey2());
                myValue = new Text(part.getValue);
                context.write(myKey, myValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
} 
{key11=key12} text1
{key21=key22} text2
{key31=key32} text3
{key41=key42} text4
我需要做什么才能使输出看起来像:

key11|key12|text1
key21|key22|text2
key31|key32|text3
key41|key42|text4

谢谢

既然它是一个仅映射的作业,为什么不将输出写为:

context.write(myKey,  NullWritable.get());

键是两个键的串联,值由|.

分隔,因为它是一个仅映射的作业,为什么不将输出写入:

context.write(myKey,  NullWritable.get());

键是两个键的串联,值由|.

分隔,因为它是一个仅映射的作业,为什么不将输出写入:

context.write(myKey,  NullWritable.get());

键是两个键的串联,值由|.

分隔,因为它是一个仅映射的作业,为什么不将输出写入:

context.write(myKey,  NullWritable.get());

将该键作为两个键和由|分隔的值的串联。

可以将NullWritable用作键,将文本用作值。在文本中,您可以将三个元素用任意分隔符分隔。

您可以将NullWritable用作键,将文本用作值。在文本中,您可以将三个元素用任意分隔符分隔。

您可以将NullWritable用作键,将文本用作值。在文本中,您可以将三个元素用任意分隔符分隔。

您可以将NullWritable用作键,将文本用作值。在文本中,您可以放置三个元素,并用任意分隔符分隔。

NullWritable是一个单例。您无法创建它的新实例。而是使用NullWritable.get()。NullWritable是一个单例。您无法创建它的新实例。而是使用NullWritable.get()。NullWritable是一个单例。您无法创建它的新实例。而是使用NullWritable.get()。NullWritable是一个单例。您无法创建它的新实例。而是使用NullWritable.get()。