小编mle*_*mle的帖子

Strange Jackson非法字符((CTRL-CHAR,代码0))Map Reduce Combiner中的异常

我有一个映射器的Map-Reduce作业,它接受一个记录并将其转换为一个对象,一个MyObject的实例,它使用Jackson编组为JSON.该值只是记录中的另一个Text字段.

映射器的相关部分如下所示:

ObjectMapper mapper = new ObjectMapper();
MyObject val = new MyObject();
val.setA(stringA);
val.setB(stringB);
Writer strWriter = new StringWriter();
mapper.writeValue(strWriter, val);
key.set(strWriter.toString());
Run Code Online (Sandbox Code Playgroud)

映射器的输出被发送到组合器,组合器解组JSON对象并聚合键值对.它在概念上非常简单,如下所示:

public void reduce(Text key, Iterable<IntWritable> values, Context cxt) 
    throws IOException, InterruptedException {
    int count = 0;
    TermIndex x = _mapper.readValue(key.toString(), MyObject.class);
    for (IntWritable int : values) ++count;
    ...
    emit (key, value)
}
Run Code Online (Sandbox Code Playgroud)

MyObject类由两个字段(两个字符串),get/set方法和一个默认构造函数组成.其中一个字段存储基于Web爬网的文本片段,但始终是字符串.

public class MyObject {
  private String A;
  private String B;

  public MyObject() {}

  public String getA() {
    return A;
  }
  public void setA(String A) …
Run Code Online (Sandbox Code Playgroud)

java json hadoop marshalling jackson

21
推荐指数
1
解决办法
1万
查看次数

标签 统计

hadoop ×1

jackson ×1

java ×1

json ×1

marshalling ×1