Вернуть условный результат из Spark RDD Tuple2 - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в Spark и использую с ним Java.На JavaRDD<Tuple2<String, String> я хотел бы выполнить операцию, в которой Tuple2._1 выступает в качестве ключа, а Tuple2._2 - в качестве значения.Для всех совпадающих ключей, если моя Tuple2._2 строка соответствует более 50% с любой другой Tuple2._2 строкой, тогда верните только 1 Tuple2 из всех остальных, верните все их.

tuple.reduceByKey(new PairFunction<Tuple2<String, String>, String, String>() {
        public Tuple2<String, String> call(Tuple2<String, String> item1, Tuple2<String, String> item2) {
            List<String> category1 = Arrays.asList(item1._2.split("\t")[0].split(","));
            List<String> name1 = Arrays.asList(item1._2.split("\t")[1].split(","));
            List<String> category2 = Arrays.asList(item2._2.split("\t")[0].split(","));
            List<String> name2 = Arrays.asList(item1._2.split("\t")[1].split(","));

            int counter1=0; int counter2=0;
            for(String word: category1) {
                if(category2.contains(word))
                    counter1++;
            }
            for(String word: name1) {
                if(name2.contains(word))
                    counter2++;
            }
            if(counter1 >= 0.50*category1.size() && counter2 >= 0.50*name1.size()) {

            }
            else {

            }
        }
    });

или Могу ли яплечо .filter() здесь, чтобы вернуть только 1 строку / кортеж2 из всех подходящих?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...