Декартово произведение двух DStream в Spark

Как я могу создать два DStream в потоке Apache, как cartesian(RDD<U>) который при вызове наборов данных типов T и U возвращает набор данных из (T, U) пар (всех пар элементов).

Одно из решений заключается в использовании соединения следующим образом, которое не кажется хорошим.

    JavaPairDStream<Integer, String> xx = DStream_A.mapToPair(s -> {
        return new Tuple2<>(1, s);
    });

    JavaPairDStream<Integer, String> yy = DStream_B.mapToPair(e -> {
        return new Tuple2<>(1, e);
    });

    DStream_A_product_B = xx.join(yy);

Есть ли лучшее решение? или как я могу использовать декартов метод РДД?

1 ответ

Я нашел ответ:

JavaPairDStream<String, String> cartes = DStream_A.transformWithToPair(DStream_B, 
     new Function3<JavaPairRDD<String, String>, JavaRDD<String>, Time, JavaPairRDD<String, String>>() {
        @Override
        public JavaPairRDD<String, String> call(JavaRDD<String> rddA, JavaRDD<String> rddB, Time v3) throws Exception {
            JavaPairRDD<String, String> res = rddA.cartesian(rddB);
            return res;
        }
    });
Другие вопросы по тегам