将JavaPairDStream <string,integer =“”>转换为JavaPairDStream <integer,string =“”>,以元组形式切换值(Java Spark)

时间:2019-03-15 15:16:34

标签: java apache-spark spark-streaming

我以为我可以做

final JavaPairDstream<String, Integer> y = ... ;

final JavaPairDStream<Integer, String> x =
                    y.mapToPair(item -> {
        return new JavaPairDStream<Integer, String>(item[1], item[0]);
    });

但这给了我错误:

array required, but scala.Tuple2<java.lang.String,java.lang.Integer> found

如何切换订单?

2 个答案:

答案 0 :(得分:1)

您的函数返回了错误的类型。是mapToPair返回一个JavaPairDStream<Integer, String>,您的函数返回了构成该流的Tuple2<Integer, String>个对象。

所以您的陈述应为:

final JavaPairDStream<Integer, String> x = 
             y.mapToPair(item -> new Tuple2<>(item._2, item._1));

答案 1 :(得分:0)

显然您也可以这样做

JavaPairDStream<Integer,String> swappedPair = wordCounts.mapToPair(x -> x.swap());