Apache kafka flink:从kafka获取字节[]数据

Apache kafka flink:从kafka获取字节[]数据,apache-kafka,snappy,apache-flink,Apache Kafka,Snappy,Apache Flink,Im使用flink-1.0-SNAPSHOT使用卡夫卡的数据。数据以Snappy compressed字节[]的形式输入,该字节被传递给thrift供以后使用 当我使用flink检索数据时,数据被破坏或处理不当,无法解压缩。代码来源于示例,如下所示: DataStream<String> messageStream = env.addSource(new FlinkKafkaConsumer081<>(parameterTool.getRequired("topic"),

Im使用flink-1.0-SNAPSHOT使用卡夫卡的数据。数据以Snappy compressed字节[]的形式输入,该字节被传递给thrift供以后使用

当我使用flink检索数据时,数据被破坏或处理不当,无法解压缩。代码来源于示例,如下所示:

DataStream<String> messageStream = env.addSource(new FlinkKafkaConsumer081<>(parameterTool.getRequired("topic"), new SimpleStringSchema(), parameterTool.getProperties()));

messageStream.rebalance().map(new MapFunction<String, String>() {

    @Override public String map(String value) throws Exception {
    boolean bvalid = Snappy.isValidCompressedBuffer(value.getBytes());
 });

将字节消息读取为字符串是不正确的。 应按原样读取字节,然后解压缩:

public Object map(byte[] bytes) throws Exception {
    boolean bvalid = Snappy.isValidCompressedBuffer(bytes);
    ...

你是如何将数据输入卡夫卡的?我无法控制的公司其他部门的一些制片人。我可以用其他方法读取数据,这样我就知道了格式。我想通过flink来实现这一点,这样我就可以将流量与我们现有的管道进行比较。Kafka做了开箱即用的快速压缩。您不需要解压缩数据-消费者可以得到解压缩的数据。@AnatolyDeyneka-到目前为止,这还不是我的经验。我将thrift对象发送到Kafka中,并使用解压缩->反序列化过程来获取消费端的位。自从我们使用卡夫卡以来,就一直是这样(至少对我而言)。据我所知,你不使用卡夫卡压缩,你把已经压缩的对象。在这种情况下,问题可能出现在“字符串值”中。将字节读取为字符串是不正确的。能否将其更改为映射(字节[]值),然后重试?
public Object map(byte[] bytes) throws Exception {
    boolean bvalid = Snappy.isValidCompressedBuffer(bytes);
    ...