Я пытаюсь сгруппировать urldata по ключу, где значения будут строки
Пример данных:
url_3 url_2
url_3 url_2
url_3 url_1
url_4 url_3
url_4 url_1
Ожидаемый результат:
(url_3,(url_2,url_1))
(url_4,(url_3,url_1))
1) Загрузитьthe urldata:
Dataset<String> lines = spark.read()
.textFile("C:/Users/91984/workspace/myApp/src/test/resources/in/urldata.txt");
2) Разделить набор данных по пробелу
Encoder<Tuple2<String, String>> encoder2 =
Encoders.tuple(Encoders.STRING(), Encoders.STRING());
Dataset<Tuple2<String, String>> tupleRDD = lines.map(f->{
Tuple2<String, String> m =
new Tuple2<String, String>(f.split(" ")[0], f.split(" ")[1]);
return m;
},encoder2);
3) Использовать groupbyKey для группировки базы данных tupleRDD по ключу
KeyValueGroupedDataset<String, Tuple2<String, String>> keygrpDS =
tupleRDD.groupByKey(f->f._1, Encoders.STRING());
Может кто-тообъясните мне, почему groupByKey на шаге 3 возвращает KeyValueGroupedDataset<String, Tuple2<String, String>>
вместо KeyValueGroupedDataset<String, Iterable<String>>
, и что будет сделано для получения ожидаемых результатов.