如何从JavaStreamingContext生成JavaPairInputStream?

如何从JavaStreamingContext生成JavaPairInputStream?,java,apache-spark,spark-streaming,dstream,java-pair-rdd,Java,Apache Spark,Spark Streaming,Dstream,Java Pair Rdd,我正在学习Apache Spark streaming,并尝试从JavaStreamingContext生成JavaPairInputStream。下面是我的代码: import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Queue; import org.apache.spark.SparkConf; im

我正在学习Apache Spark streaming,并尝试从
JavaStreamingContext
生成
JavaPairInputStream
。下面是我的代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.streaming.Durations;
import org.apache.spark.streaming.api.java.JavaPairDStream;
import org.apache.spark.streaming.api.java.JavaPairInputDStream;
import org.apache.spark.streaming.api.java.JavaStreamingContext;
.......    
.......

SparkConf sc = new SparkConf().setAppName("SparkStreamTest").setMaster("local[*]");;
JavaSparkContext jsc = new JavaSparkContext(sc);
JavaStreamingContext jssc = new JavaStreamingContext(jsc, Durations.seconds(3));

List<Tuple2<String, String>> data1 = new ArrayList<Tuple2<String, String>>();
data1.add(new Tuple2<String, String>("K1", "ABC"));
data1.add(new Tuple2<String, String>("K2", "DE"));
data1.add(new Tuple2<String, String>("K1", "F"));
data1.add(new Tuple2<String, String>("K3", "GHI"));

JavaPairRDD<String, String> pairs1 = jssc.sparkContext().parallelizePairs(data1);

List<Tuple2<String, Integer>> data2 = new ArrayList<Tuple2<String, Integer>>();
data2.add(new Tuple2<String, Integer>("K1", 123));
data2.add(new Tuple2<String, Integer>("K2", 456));
data2.add(new Tuple2<String, Integer>("K7", 0));

JavaPairRDD<String, String> pairs2 = jssc.sparkContext().parallelizePairs(data1);

Queue<JavaPairRDD<String, String>> inputQueue = new LinkedList<>(Arrays.asList(pairs1, pairs2));

JavaPairInputDStream<String, String> lines = jssc.queueStream(inputQueue, true);
import java.util.ArrayList;
导入java.util.array;
导入java.util.LinkedList;
导入java.util.List;
导入java.util.Queue;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.javapairdd;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.streaming.Durations;
导入org.apache.spark.streaming.api.java.JavaPairDStream;
导入org.apache.spark.streaming.api.java.JavaPairInputStream;
导入org.apache.spark.streaming.api.java.JavaStreamingContext;
.......    
.......
SparkConf sc=new SparkConf().setAppName(“SparkStreamTest”).setMaster(“local[*]);;
JavaSparkContext jsc=新的JavaSparkContext(sc);
JavaStreamingContext jssc=新的JavaStreamingContext(jsc,Durations.seconds(3));
List data1=new ArrayList();
数据1.添加(新元组2(“K1”、“ABC”);
数据1.添加(新元组2(“K2”、“DE”);
数据1.添加(新的元组2(“K1”,“F”));
数据1.添加(新元组2(“K3”、“GHI”);
javapairdd pairs1=jssc.sparkContext().parallelizePairs(数据1);
List data2=新的ArrayList();
数据2.add(新的Tuple2(“K1”,123));
数据2.add(新的Tuple2(“K2”,456));
数据2.add(新的Tuple2(“K7”,0));
javapairdd pairs2=jssc.sparkContext().parallelizePairs(数据1);
Queue inputQueue=newlinkedlist(Arrays.asList(pairs1,pairs2));
JavaPairInputStreamLines=jssc.queueStream(inputQueue,true);
但是我的应用程序的最后一行抛出了这个异常:

类型
JavaStreamingContext
中的方法
queueStream(Queue,boolean)
不适用于参数(
Queue
boolean

我不知道如何使用JavaStreamingContext生成JavaPairInputStream

如果您检查
JavaStreamingContext
类的
queueStream
方法,它会接受
java.util.Queue
作为队列参数。我修改了您的程序以获得
队列新的Tuple2(tuple.\u 1().toLowerCase(),tuple.\u 2());
//印刷品
javaPairDStream.print();
//开始
jssc.start();
jssc.aittimination();
}
}
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.streaming.Durations;
import org.apache.spark.streaming.api.java.JavaInputDStream;
import org.apache.spark.streaming.api.java.JavaPairDStream;
import org.apache.spark.streaming.api.java.JavaStreamingContext;

import scala.Tuple2;

public class SparkStreamTest {
    public static void main(String[] args) throws Exception {
        SparkConf sc = new SparkConf().setAppName("SparkStreamTest").setMaster("local[*]");;
        JavaStreamingContext jssc = new JavaStreamingContext(sc, Durations.seconds(5));
        //first data list
        List<Tuple2<String, String>> data1 = new ArrayList<Tuple2<String, String>>();
        data1.add(new Tuple2<String, String>("K1", "ABC"));
        data1.add(new Tuple2<String, String>("K2", "DE"));
        data1.add(new Tuple2<String, String>("K1", "F"));
        data1.add(new Tuple2<String, String>("K3", "GHI"));
        //javaRDD1
        JavaRDD<Tuple2<String, String>> javaRDD1 = jssc.sparkContext().parallelize(data1);
        //second data list
        List<Tuple2<String, String>> data2 = new ArrayList<Tuple2<String, String>>();
        data2.add(new Tuple2<String, String>("K1", "123"));
        data2.add(new Tuple2<String, String>("K2", "256"));
        data2.add(new Tuple2<String, String>("K7", "0"));
        //javaRDD2
        JavaRDD<Tuple2<String, String>> javaRDD2 = jssc.sparkContext().parallelize(data2);
        //Queue
        Queue<JavaRDD<Tuple2<String, String>>> inputQueue = new LinkedList<JavaRDD<Tuple2<String, String>>>();
        inputQueue.add(javaRDD1);
        inputQueue.add(javaRDD2);
        //stream
        JavaInputDStream<Tuple2<String, String>> javaDStream = jssc.queueStream(inputQueue, true);
        JavaPairDStream<String,String> javaPairDStream = javaDStream.mapToPair(tuple -> new Tuple2(tuple._1().toLowerCase(),tuple._2()));
        //print
        javaPairDStream.print();
        //start
        jssc.start();
        jssc.awaitTermination();
    }
}