我尝试创建一个以下的流:
rabbitmq | spark-custom-processor |文件 - 汇
RabbitMq从具有消息的队列中读取,其头部类型为application / json,表示我的POJO类House
。然后,这些读取的消息应传输到我的spark-custom-processor
,并在处理器完成其工作后,将结果存储在文件中。
问题是到达spark-custom-processor
的数据类型是Byte
而不是转换为我的POJO类House
的application / json消息。
如果阅读了解释Type convertion的文档,并且它会自动完成转换为我的POJO House
类型的文档,但事实并非如此。
我也尝试过使用:
rabbitmq | --inputputType = application / x-java-object; type = domain.MetricBean spark-custom-processor |文件汇 在
指定转换但springXdShell
;
对于sintax错误的抱怨
有没有方法可以做到,或者我必须自己在ObjectMapper
中使用spark-custom-processor
进行映射?
答案 0 :(得分:0)
您只需要使用;
引用字符串。
我刚测试过这个并且工作正常......
xd:>stream create foo --definition "rabbit --outputType='application/x-java-object;type=foo.Foo'
| log" --deploy
public class Foo {
private String foo;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
@Override
public String toString() {
return "Foo [foo=" + foo + "]";
}
}
发布{"foo":"bar"}
2015-07-30T10:37:36-0400 1.2.0.RC1 INFO SimpleAsyncTaskExecutor-1 sink.foo - Foo [foo=bar]