将 JavaPairDStream<String, Integer> 转换为 JavaPairDStream<Integer, String>,在元组中切换值(Java Spark)

Convert JavaPairDStream<String, Integer> to JavaPairDStream<Integer, String>, switching values in tuple (Java Spark)

我以为我可以做到

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

如何切换顺序?

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

所以你的声明应该是:

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

显然你也可以做到

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