从Spark Job中读取Kafka主题的二进制数据

时间:2016-12-19 09:57:50

标签: apache-spark

我需要从Kafka主题中读取加密消息。我当前从主题中读取字符串的代码如下所示:

JavaInputDStream<ConsumerRecord<String, String>> istream1 = KafkaUtils.createDirectStream(
                    jssc,
                    LocationStrategies.PreferConsistent(),
                    ConsumerStrategies.<String, String>Subscribe(Arrays.asList(topics), kafkaParams)
                );

我应该对此代码进行哪些更改以从kafka队列中读取字节数组,以确保加密数据在类型转换过程中不会被破坏。 虽然我从Spark编程指南中获取了上述代码,但我无法在KafkaUtils中找到此API: http://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/streaming/kafka/KafkaUtils.html

1 个答案:

答案 0 :(得分:0)

您可以看到Kafka Connection here的一个很好的例子。

但你想要的是从卡夫卡话题中取出ByteArray

此连接需要创建JavaPairInputDStream,如下所示:

import org.apache.kafka.common.serialization.ByteArrayDeserializer
JavaPairInputDStream<String, Array[Byte]> messages = KafkaUtils.createDirectStream(
    jssc,
    String.class,
    String.class,
    StringDecoder.class,
    ByteArrayDeserializer.class,
    kafkaParams,
    topicsSet
);