Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kafka将引发流式java api问题_Java_Apache Spark - Fatal编程技术网

kafka将引发流式java api问题

kafka将引发流式java api问题,java,apache-spark,Java,Apache Spark,我是卡夫卡和火花的初学者。我想通过spark streaming对从卡夫卡收到的特定主题的数据进行实时处理。我无法使用createStream函数返回的JavaPairReceiverInputStream SparkConf conf = new SparkConf().setMaster("local[2]").setAppName( "testwordCount"); JavaStreamingContext jssc = new JavaS

我是卡夫卡和火花的初学者。我想通过spark streaming对从卡夫卡收到的特定主题的数据进行实时处理。我无法使用createStream函数返回的JavaPairReceiverInputStream

SparkConf conf = new SparkConf().setMaster("local[2]").setAppName(
                "testwordCount");
        JavaStreamingContext jssc = new JavaStreamingContext(conf,
                Durations.seconds(1));

        Map<String, Integer> topics_map = new HashMap<String, Integer>();

        topics_map.put("Customtopic", 10);

JavaPairReceiverInputDStream<String, String> kafkaStream = KafkaUtils
                .createStream(jssc, "localhost:2181", "kafkasparkconsumer",
                        topics_map);
SparkConf conf=new SparkConf().setMaster(“local[2]”)。setAppName(
“testwordCount”);
JavaStreamingContext jssc=新的JavaStreamingContext(conf,
持续时间:秒(1);
映射主题_Map=newhashmap();
主题地图放置(“自定义主题”,10);
JavaPairReceiverInputStream kafkaStream=KafkaUtils
.createStream(jssc,“本地主机:2181”,“kafkasparkconsumer”,
主题(地图),;
下面的代码给出了一个错误:

 JavaPairDStream<String, Integer> wordCounts = kafkaStream.map(
                 new PairFunction<String, String, Integer>() {
                 @Override public Tuple2<String, Integer> call(String s) {
                 return new Tuple2<String, Integer>(s, 1);
                 }
                 }).reduceByKey(new Function2<Integer, Integer, Integer>() {
                 @Override
                 public Integer call(Integer i1, Integer i2) {
                 return i1 + i2;
                 }
                 });
                 wordCounts.print();
JavaPairDStream wordCounts=kafkaStream.map(
新PairFunction(){
@重写公共元组2调用(字符串s){
返回新的Tuple2(s,1);
}
}).reduceByKey(新功能2(){
@凌驾
公共整数调用(整数i1、整数i2){
返回i1+i2;
}
});
wordCounts.print();
JavaPairDStream类型中的方法映射(函数,R>)不适用于参数(新PairFunction(){})SparkStreamingKafka.java/Kafka Spark/src/com/sd/Kafka line 43 java问题


我使用的spark版本是1.2.0。我找不到处理卡夫卡消息的JavaAPI示例。有人能告诉我需要更改什么吗?

您调用了错误的方法。在java中,如果想要获得一对,应该调用。请尝试以下代码:

JavaPairDStream<String, Integer> pairs = kafkaStream
            .mapToPair(new PairFunction<Tuple2<String, String>, String, Integer>() {
                @Override public Tuple2<String, Integer> call(Tuple2<String, String> word) throws Exception {
                    return new Tuple2<String, Integer>(word._2(), 1);
                }
            }).reduceByKey(new Function2<Integer, Integer, Integer>() {
                @Override public Integer call(Integer integer, Integer integer2) throws Exception {
                    return integer + integer2;
                }
            });

    pairs.print();

    jssc.start();
    jssc.awaitTermination();
JavaPairDStream pairs=kafkaStream
.mapToPair(新的PairFunction(){
@重写公共Tuple2调用(Tuple2字)引发异常{
返回新的元组2(word._2(),1);
}
}).reduceByKey(新功能2(){
@重写公共整数调用(整数、整数2)引发异常{
返回整数+整数2;
}
});
pairs.print();
jssc.start();
jssc.aittimination();

kafkaStream返回一个元组。检查这个

JavaPairReceiverInputDStream<String, String> kafkaStream = KafkaUtils
                .createStream(jssc, "localhost:2181", "kafkasparkconsumer",
                        topics_map);
JavaDStream<String> lines = kafkaStream
                .map(new Function<Tuple2<String, String>, String>() {
                    /**
                     * 
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public String call(Tuple2<String, String> tuple2) {
                        return tuple2._2();
                    }
                });
JavaPairReceiverInputDStream kafkaStream=KafkaUtils
.createStream(jssc,“本地主机:2181”,“kafkasparkconsumer”,
主题(地图),;
JavaDStream lines=kafkaStream
.map(新函数(){
/**
* 
*/
私有静态最终长serialVersionUID=1L;
@凌驾
公共字符串调用(Tuple2 Tuple2){
返回tuple2._2();
}
});