【发布时间】:2020-05-04 18:07:15
【问题描述】:
我有以下代码:
Properties properties = new Properties();
properties.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, MyCustomClassDeserializer.class.getName());
FlinkKafkaConsumer<MyCustomClass> kafkaConsumer = new FlinkKafkaConsumer(
"test-kafka-topic",
new SimpleStringSchema(),
properties);
final StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<MyCustomClass> kafkaInputStream = streamEnv.addSource(kafkaConsumer);
DataStream<String> stringStream = kafkaInputStream
.map(new MapFunction<MyCustomClass,String>() {
@Override
public String map(MyCustomClass message) {
logger.info("--- Received message : " + message.toString());
return message.toString();
}
});
streamEnv.execute("Published messages");
MyCustomClassDeserializer 用于将字节数组转换为 java 对象。
当我在本地运行这个程序时,我得到了错误:
原因:org.apache.flink.api.common.functions.InvalidTypesException: Input mismatch: Basic type expected.
我得到这个代码行:
.map(new MapFunction<MyCustomClass,String>() {
不知道为什么我会得到这个?
【问题讨论】: