Я новичок в 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 из всех подходящих?