什么是&#34; Class <r> recordClass&#34;在JavaInputDStream中?

时间:2016-10-10 21:28:56

标签: java apache-spark apache-kafka spark-streaming avro

我正在尝试使用以下API与Kafka进行Spark流式传输。我必须使用spark流式传输avro序列化数据,数据位于Kafka。

static <K,V,KD extends kafka.serializer.Decoder<K>,VD extends kafka.serializer.Decoder<V>,R> 
    JavaInputDStream<R> createDirectStream(JavaStreamingContext jssc, Class<K> keyClass, Class<V> valueClass, Class<KD> keyDecoderClass, Class<VD> valueDecoderClass, Class<R> recordClass, java.util.Map<String,String> kafkaParams, java.util.Map<kafka.common.TopicAndPartition,Long> fromOffsets, Function<kafka.message.MessageAndMetadata<K,V>,R> messageHandler)
    :: Experimental :: Create an input stream that directly pulls messages from Kafka Brokers without using any receiver.

我可以知道我需要为API中的参数Class recordClass提供什么?我使用了下面的API,但它给出了编译错误。

我想要的只是从kafka接收字节流数据到火花流。

JavaInputDStream<byte[]> directKafkaStream = KafkaUtils.createDirectStream(jsc, String.class, byte[].class,
        StringDecoder.class, DefaultDecoder.class, byte[].class, kafkaParams, topicMap,
        (Function<MessageAndMetadata<String, String>, String>) MessageAndMetadata::message);
  

线程中的异常&#34; main&#34; java.lang.Error:未解析的编译   问题:方法createDirectStream(JavaStreamingContext,   班级,班级,班级,班级,班级,   地图,地图,   KafkaUtils类型中的函数,R&gt;不是   适用于参数(JavaStreamingContext,Class,   班级,班级,班级,   班级,地图,地图,   功能,字符串&GT)

1 个答案:

答案 0 :(得分:4)

试试这个。

 JavaInputDStream<byte[]> directKafkaStream = KafkaUtils.createDirectStream(jssc, String.class, byte[].class,
                StringDecoder.class, DefaultDecoder.class, byte[].class, kafkaParams, fromOffset,
                (Function<MessageAndMetadata<String, byte[]>, byte[]>) MessageAndMetadata::message);

Here是Kafka,Avro和Spark的文章。