使用mapPartitionsWithIndex进行DStream - Spark Streaming

时间:2016-10-17 21:48:05

标签: java apache-spark intellij-idea spark-streaming

我想做一些非常简单的事情:检查DStream的第一个RDD中每个分区的内容是什么。 这就是我现在正在做的事情:

SparkConf sparkConfiguration= new SparkConf().setAppName("DataAnalysis").setMaster("local[*]");
    JavaStreamingContext sparkStrContext=new JavaStreamingContext(sparkConfiguration, Durations.seconds(1));
    JavaReceiverInputDStream<String> receiveParkingData=sparkStrContext.socketTextStream("localhost",5554);


Time time=new Time(1000);

JavaRDD<String>dataRDD= receiveParkingData.compute(time);

//I get an error in this RDD

    JavaRDD<String>indexDataRDD=dataRDD.mapPartitionsWithIndex(new Function2<Integer, Iterator<String>, Iterator<String>>() {
        @Override

        public Iterator<String> call(Integer integer, Iterator<String> stringIterator) throws Exception {
            return null;
        }
    });

indexDataRDD.collect();

所以我想打印每个分区的内容及其ID。但是,在indexDataRDD我在IntelliJ IDE中收到此消息:mapPartitionsWithIndex (Function2<Integer, Iterator<String>, Iterator<String>>, boolean) in AbstractJavaRDDLike cannot be applied to (Function2<Integer, Iterator<String>, Iterator<String>>)

有人可以帮我解决这个问题吗?是否有另一种更简单的方法来获取每个分区中的内容?我真的想知道每个分区的具体内容。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

以下是mapPartitionsWithIndex的示例程序供您参考。

import redis.clients.jedis.*