使用Flink时从Kafka中读取Array[Byte]类型的Schema

使用Flink时,如果从Kafka中读取输入流,默认提供的是String类型的Schema:

val myConsumer = new FlinkKafkaConsumer08[String]("Topic名称", new SimpleStringSchema(), properties);

如果存入Kafka中的数据不是JSON,而是Protobuf类型的数据,需要用二进制的Schema进行接收,可以自己实现一个类,很简单,只有一行代码

 class ByteArrayDeserializationSchema[T] extends AbstractDeserializationSchema[Array[Byte]]{
  @throws[IOException]
  override def deserialize(message: Array[Byte]): Array[Byte] = message
}

然后使用时,如下所示:

val myConsumer = new FlinkKafkaConsumer08[String]("Topic名称", new ByteArrayDeserializationSchema[Array[Byte]](), properties);

 

posted @ 2017-08-29 15:41  静若清池  阅读(5280)  评论(0编辑  收藏  举报