Spark JavaRDD получава десет първи стойности, върнати като JavaRDD

Имам JavaRDD

JavaRDD<Tweet> ordered = ... ;

Както подсказва името, поръчан е. Бих искал да взема първите десет стойности (това е в низходящ ред):

JavaRDD<Tweet> top10Followers = ordered.take(10);

Но ми дава следната грешка:

incompatible types: java.util.List<Tweet> cannot be converted to org.apache.spark.api.java.JavaRDD<Tweet>

take връща списък. Има ли начин да получите първите десет като JavaRDD?


person S.D    schedule 19.03.2019    source източник
comment
Някаква причина да използвате RDD вместо Dataframe/Dataset? Можете ли да споделите малко повече код?   -  person jgp    schedule 19.03.2019
comment
В дадения случай се налага... Предполагам, че въпросът ми е възможно ли е това с РДД (а не нещо друго)?   -  person S.D    schedule 19.03.2019
comment
Предполагам, че е, може би ако споделите малко повече код...   -  person jgp    schedule 19.03.2019


Отговори (1)


Нямам лаптопа си за проверка, така че ще хвърлям идеи. съжалявам

Тъй като 10 е малко число, бих отишъл с collect и след това паралелизиране.. :-)

Ако приемем, че това е по-общ въпрос от 10, но достатъчно малък, за да се побере в един дял, тогава може би: - повторно разпределяне с 1 (помислете за добавяне на коалесценция) - сортиране - zipWithindex - филтър (ключ по-малък от "10")

IMHO zipWithindex няма да свърши работата за мулти дял (не може да провери), защото присвоява индекси първо въз основа на индекса на дяла и след това подреждането вътре в дяла.

person Izik Golan    schedule 19.03.2019